將mongodb 資料指定欄位匯出,然後指定欄位匯入mysql 執行個體 及相關問題解決

來源:互聯網
上載者:User

標籤:mongoexport   mysql   utf8mb4   error 1262 (01000)   

需求:將mongodb 資料指定欄位匯出,然後再指定欄位匯入mysql  表中




直接吧,


最後 會將遇到幾個問題及解決方案貼出,以便遇到類似問題可以迅速解決(期間所用命令具體用法不在本文詳解之內)



  1. 將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,這裡有兩種情況,一種是匯入全新的表,另一種則是匯入已存在的表,但是需要指定該表具體欄位


  1. 新表:

  2. LOAD DATA INFILE ‘/data/mysql/export2.csv‘  INTO TABLE temp_test  CHARACTER SET utf8  FIELDS TERMINATED BY ‘,‘ ENCLOSED BY ‘"‘;


  1. 老表指定欄位:

  2. 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 執行個體 及相關問題解決

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.