从mongodb向mysql迁移数据

数据迁移指南

从mongodb导出csv格式数据

  • 命令:mongoexport #### 参数
  • -d: 指定数据库,-d status_dev
  • -c: 指定collicitons,-c users
  • -q: 指定查询条件,注意条件中出现的$符号需要转义\$
  • --csv: 导出为csv格式
  • -f: 指定导出的列,csv必须,-f user_key,token,user_behavior._id
  • -o: 指定导出文件及位置,-o ~/work/users.csv

完整示例:

mongoexport \
-d status_dev \
-c users \
-q "{'user_behavior.current_thin_plan_milestone': {'\$ne': null} }" \
--csv \
-f user_key,user_behavior.current_thin_plan_milestone,user_behavior.thin_plan_milestone_completed_on \
-o ~/work/users.csv

导入csv格式数据至mysql

load data infile '~/work/users.csv'   -- 为了安全,如果文件路径为根路径,需要使用load data local infile
into table users
fields terminated by ','  -- 字段之间以逗号分隔
fields enclosed by '"'  -- 字符串以半角双引号包围
fields escaped by '"'  -- 字符串本身的双引号用"转义,即用两个双引号表示,也有用\转义
lines terminated by '\r\n'  -- 数据行之间以\r\n分隔
ignore 1 lines;  -- 另外,第一行标题行需要单独设置。

里面最关键的部分就是格式参数,这个参数是根据RFC4180文档设置的,该文档全称Common Format and MIME Type for Comma-Separated Values (CSV) Files,其中详细描述了CSV格式。