需求:將mongodb 數據指定字段導出,然后再指定字段導入mysql 表中
直接上圖吧,
最后 會將遇到幾個問題及解決方案貼出,以便遇到類似問題可以迅速解決(期間所用命令具體用法不在本文詳解之內)
將mongodb 數據指定字段導出,所用命令Mongoexport ,具體查閱官方文檔;
導出指定二級字段 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
2. 在mysql 機器上 rsync 傳輸過來,rysnc 用法就不講了,帶過
rsync -chavzP --stats yourusername@yourip:/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);
結果驗證:
導入成功;
4.疑難雜癥1:mongo 導出時二級字段的正確導出方法
4.疑難雜癥2:mysql導入時 ERROR 1366 (HY000): Incorrect string value: '\xF0\xA5\x8C\x93\xE5\x85...' for column 'address' at row 45293 解決 方法
這個問題很難解決,一般是認為utf8mb4 所導致,具體原因看下面,需要修改表的默認字符集,并以指定utf8mb4 導入;
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 的問題,需要修改;
5.其他問題,比如主鍵重復,字段大小不滿足要求,等等小問題自行琢磨解決
最后正常的結果顯示:
百度內搜到的帖子能解決此類問題的很少,并且都不是完整的實例,這里貼出完整的整個操作實例,希望對大家有幫助;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。