1. 程式人生 > >MySQL數據導入到Mongo

MySQL數據導入到Mongo

use 需要 數據庫 mage 測試 user mysq inf 數據導入

背景:如題幹所述,需要將一份數據導入到mongo數據庫,減少項目依賴的數據源。

解決方案:

使用mongo自帶的mongoimport工具。

首先在test庫裏創建一個空集合:【import_test】,起初用的導入指令如下:

[root@localhost mongodb]# ./bin/mongoimport --host 192.168.104.178:17017 -u adminuser -p 112233 --authenticationDatabase=admin  -d test -c import_test --fields=userid,serial,create_time --type csv -file csvToMongo.csv 
2018-06-11T18:47:07.075+0800 connected to: 192.168.104.178:17017 2018-06-11T18:47:07.083+0800 imported 15 documents

指令講解:

  • --authenticationDatabase:測試集群使用了身份驗證,需要在admin庫裏登陸後,才能操作
  • -d:集合所在的庫
  • --fields:集合中的字段名

結果發現mongo的字段不能正常被創建,如下

技術分享圖片

只能換一種方式進行導入,後來發現將字段名稱寫到文件後,再導入就不會有問題,具體如下:

[root@localhost mongodb]# cat myfields.txt 
userid
serial
create_time

myfields文件中保存了這三個字段,每行一個,然後執行導入命令:

[root@localhost mongodb]# ./bin/mongoimport --host 192.168.104.178:17017 -u adminuser -p 112233 --authenticationDatabase=admin  -d test -c import_test --fieldFile myfields.txt --type csv --file csvToMongo.csv 
2018-06-11T18:58:06.894+0800    connected to: 192.168.104.178:17017
2018-06-11T18:58:06.903+0800 imported 15 documents

結果如下:

技術分享圖片

最後貼上測試用的csv數據:

[root@localhost mongodb]# cat csvToMongo.csv
1504165,1,2016-05-25 04:13:07
1504585,1,2016-05-25 04:13:07
1556423,1,2016-05-25 03:02:45
1557488,1,2016-06-30 06:51:11
1558460,1,2016-03-29 06:54:50
1508659,1,2016-05-25 05:10:15
1500073,1,2015-04-14 13:12:32
1505064,1,2016-07-01 03:51:34
1507204,1,2016-09-21 10:28:49
1506296,1,2015-09-25 04:43:57
1506765,1,2016-07-01 07:26:10
1506944,1,2016-06-30 09:36:38
1506162,1,2015-12-09 10:08:10
1506814,1,2015-12-09 13:57:07
1506014,1,2016-05-25 06:38:28

註意:最後的最後,我終於知道為什麽字段名不正常了,和mongo的指令無關,只是第一個指令最後一個參數寫的有誤,file前面只有一個橫杠“-”,如果寫兩個橫杠,也一樣有正確的結果,哈哈哈

./bin/mongoimport --host 192.168.104.178:17017 -u adminuser -p 112233 --authenticationDatabase=admin -d test -c import_test --fields=userid,serial,create_time --type csv --file csvToMongo.csv

說完了。

MySQL數據導入到Mongo