標籤:mongoexport mysql utf8mb4 error 1262 (01000)
需求:將mongodb 資料指定欄位匯出,然後再指定欄位匯入mysql 表中
直接吧,
最後 會將遇到幾個問題及解決方案貼出,以便遇到類似問題可以迅速解決(期間所用命令具體用法不在本文詳解之內)
-
將mongodb 資料指定欄位匯出,所用命令Mongoexport ,具體查閱官方文檔;
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/80/4B/wKiom1c9XeOyTg1tAABDbpOx7js007.png" style="float:none;" title="1.2--export.png" alt="wKiom1c9XeOyTg1tAABDbpOx7js007.png" />
匯出指定二級欄位 Mongodb
/opt/mongodb/bin/mongoexport --host yourip --port yourport -d app_form -c application_data --csv --out export2.csv --fields applicant.name,applicant.id_card_num,applicant.cell_phone_num,applicant.home_addr
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/80/4B/wKiom1c9XeOQqhaiAABqe_aZhCY411.png" style="float:none;" title="1--export.png" alt="wKiom1c9XeOQqhaiAABqe_aZhCY411.png" />
2. 在mysql 機器上 rsync 傳輸過來,rysnc 用法就不講了,帶過
rsync -chavzP --stats [email protected]:/home/mongodata/export.csv /data/mysql/
3.匯入mysql,這裡有兩種情況,一種是匯入全新的表,另一種則是匯入已存在的表,但是需要指定該表具體欄位
-
新表:
-
LOAD DATA INFILE ‘/data/mysql/export2.csv‘ INTO TABLE temp_test CHARACTER SET utf8 FIELDS TERMINATED BY ‘,‘ ENCLOSED BY ‘"‘;
-
老表指定欄位:
-
LOAD DATA INFILE ‘/data/mysql/export2.csv‘ INTO TABLE temp_test2 CHARACTER SET utf8mb4 FIELDS TERMINATED BY ‘,‘ ENCLOSED BY ‘"‘ (name,idcard,tellnumber, address);
結果驗證:
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M00/80/4B/wKiom1c9Xu7jiC-VAABk6y__R68477.png" title="yanzheng1.png" alt="wKiom1c9Xu7jiC-VAABk6y__R68477.png" />
匯入成功;
4.疑難雜症1:mongo 匯出時二級欄位的正確匯出方法
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/80/4C/wKiom1c9X5KiPBEmAABPNA1iDW0386.png" title="111111--erjiziduan.png" alt="wKiom1c9X5KiPBEmAABPNA1iDW0386.png" />
4.疑難雜症2:mysql匯入時 ERROR 1366 (HY000): Incorrect string value: ‘\xF0\xA5\x8C\x93\xE5\x85...‘ for column ‘address‘ at row 45293 解決 方法
這個問題很難解決,一般是認為utf8mb4 所導致,具體原因看下面,需要修改表的預設字元集,並以指定utf8mb4 匯入;
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M00/80/4C/wKiom1c9YDOwx0fyAADCyDOumRk173.png" title="error1--solutions.png" alt="wKiom1c9YDOwx0fyAADCyDOumRk173.png" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/80/4C/wKiom1c9YEWiy-c2AAA8UJbd7bM809.png" title="22222--mb4.png" alt="wKiom1c9YEWiy-c2AAA8UJbd7bM809.png" />
ALTER TABLE temp_test2 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 修改即可1
4.疑難雜症3:mongo 匯入時ERROR 1262 (01000): Row 1066659 was truncated; it contained more data than there were input columns 解決方案,sql_mode 的問題,需要修改;
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/80/4C/wKiom1c9YPjTLYVFAAC-Ptk_o0k693.png" title="3333--ssss.png" alt="wKiom1c9YPjTLYVFAAC-Ptk_o0k693.png" />
5.其他問題,比如主鍵重複,欄位大小不滿足要求,等等小問題自行琢磨解決
最後正常的結果顯示:
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/80/49/wKioL1c9YjSghTDVAABxq1qFmJs092.png" title="success.png" alt="wKioL1c9YjSghTDVAABxq1qFmJs092.png" />
百度內搜到的文章能解決此類問題的很少,並且都不是完整的執行個體,這裡貼出完整的整個操作執行個體,希望對大家有協助;
本文出自 “linux-centos筆記” 部落格,請務必保留此出處http://fuyuan2015.blog.51cto.com/8678344/1775054
將mongodb 資料指定欄位匯出,然後指定欄位匯入mysql 執行個體 及相關問題解決