zoukankan      html  css  js  c++  java
  • MySQL数据导入到Mongo

    背景:如题干所述,需要将一份数据导入到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

     说完了。

    补充一个json文件的导入指令

    ./bin/mongoimport --host 192.168.104.178:17017 -u adminuser -p 112233 --authenticationDatabase=admin --drop  -d test -c session_info --file jsonToMongo.json -j 10

    -j,多线程跑,可以自定义
    --drop,导入之前先清空表里所有数据

  • 相关阅读:
    android调用google地图
    AndroidManifest.xml中android:configChanges的简介
    android消息推送机制
    用j4lChartAndroid实现3D图饼
    读《重构改善既有代码的设计》笔记一
    怎样删除data下的多余文件
    Mac OSX 10.8 下 配置 mysql+python+thrift开发环境
    新的征程
    练习1 四则运算的程序
    作业二四则运算
  • 原文地址:https://www.cnblogs.com/yucy/p/9168610.html
Copyright © 2011-2022 走看看