记一下今天踩得坑
今天项目经理给了我一份js文件,让我导入到mongodb里,然后转成mysql,最后放到es里
我直接用navicat for mongodb 运行脚本文件,直接导入了
然后用 mongodb 自带的 mongodbExport 工具导出为了csv文件
先去自己mongodb 安装目录下找到bin,点进去以后有一个mongoexport
然后执行这条命令即可导出
mongoexport -d food_nutrient -c food_nutrient --csv -f food_id,name,heart,unit,type,picture,nutr -o food_nutrient.csv
-d:指明使用的库,本例中为food_nutrient
-c:指明要导出的集合,本例中为food_nutrient
-o:指明要导出的文件名,本例中为food_nutrient.csv
-csv:指明要导出为csv格式
-f:指明需要导出 food_id,name,heart,unit,type,picture,nutr 这几列的数据
我这里导出时多加了一个 _id 字段,这个字段我记得是mongodb自己带的,我这里多导出了这个字段,导致我后面导入到es时报错
导出 csv 文件后,要将文件导入到mysql中,这里我也是直接用navicat了,先建好表,然后右键表导入向导,里面有个csv文件类型,直接下一步就可以了
导入到mysql后,要往es里导入数据,这里我直接用之前用过的一个导数据的项目导的
这里有个坑,数据一直导不进去,后来我仔细看了日志发现请求报错了
报了这个错
Field [_id] is a metadata field and cannot be added inside a document. Use the index API request parameters
说 _id 这个字段有问题,其实就是我表里有 _id 这个字段和es的冲突了,然后我只好改了查询的sql,这里其实在导出的时候就不该导出 _id 这个字段了