zoukankan      html  css  js  c++  java
  • Mongo mongoexport/mongoimport介绍

    一、Mongoexport导出数据

      1,导出json数据
        mongoexport -d db -c collection -o save-file.dat

      2,导出CSV数据

        mongoexport -d db -c collection --type=csv -f field1,field2 -o save-file.dat

           说明:db目标数据库,collection目标集合,save-file.dat要保存的文件,--type指定导出的格式,默认是json,-f后面是需要导出的字段名称,多个字段名用逗号隔开

    二、mongoimport导入数据

      1,导入json数据
        mongoimport -d db -c collection --file save-file.dat

      2,导入CSV数据

        mongoimport -d db -c collection --type=csv --headerline --file save-file.dat

           说明:db目标数据库,collection目标集合,save-file.dat要导入的文件,--type指定导出的格式,默认是json,--headerline批明不导入第一行

     

    三、导出工具mongoexport 简介,通过帮助先了解下mongoexport的功能参数

    复制代码
    [root@iZ2ze4b308vd83fulq9n7iZ ~]# mongoexport --help
    Usage:
      mongoexport <options>
    
    Export data from MongoDB in CSV or JSON format.
    
    See http://docs.mongodb.org/manual/reference/program/mongoexport/ for more information.
    
    general options:
          --help                     print usage
          --version                  print the tool version and exit
    
    verbosity options:
      -v, --verbose                  more detailed log output (include multiple times for more verbosity, e.g. -vvvvv)
          --quiet                    hide all log output
    
    connection options:
      -h, --host=                    mongodb host to connect to (setname/host1,host2 for replica sets)
          --port=                    server port (can also use --host hostname:port)
    
    authentication options:
      -u, --username=                username for authentication
      -p, --password=                password for authentication
          --authenticationDatabase=  database that holds the user's credentials
          --authenticationMechanism= authentication mechanism to use
    
    namespace options:
      -d, --db=                      database to use
      -c, --collection=              collection to use
    
    output options:
      -f, --fields=                  comma separated list of field names (required for exporting CSV) e.g. -f "name,age"
          --fieldFile=               file with field names - 1 per line
          --type=                    the output format, either json or csv (defaults to 'json')
      -o, --out=                     output file; if not specified, stdout is used
          --jsonArray                output to a JSON array rather than one object per line
          --pretty                   output JSON formatted to be human-readable
    
    querying options:
      -q, --query=                   query filter, as a JSON string, e.g., '{x:{$gt:1}}'
      -k, --slaveOk                  allow secondary reads if available (default true)
          --forceTableScan           force a table scan (do not use $snapshot)
          --skip=                    number of documents to skip
          --limit=                   limit the number of documents to export
          --sort=                    sort order, as a JSON string, e.g. '{x:1}'
    复制代码

    关键参数说明:

    • -h,--host :代表远程连接的数据库地址,默认连接本地Mongo数据库;
    • --port:代表远程连接的数据库的端口,默认连接的远程端口27017;
    • -u,--username:代表连接远程数据库的账号,如果设置数据库的认证,需要指定用户账号;
    • -p,--password:代表连接数据库的账号对应的密码;
    • -d,--db:代表连接的数据库;
    • -c,--collection:代表连接数据库中的集合;
    • -f, --fields:代表集合中的字段,可以根据设置选择导出的字段;
    • --type:代表导出输出的文件类型,包括csv和json文件;
    • -o, --out:代表导出的文件名;
    • -q, --query:代表查询条件;
    •  --skip:跳过指定数量的数据;
    • --limit:读取指定数量的数据记录;
    • --sort:对数据进行排序,可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列,如sort({KEY:1})。

    注意:

      当查询时同时使用sort,skip,limit,无论位置先后,最先执行顺序 sort再skip再limit。

    实例:

      首先查看下数据库中的数据一共多少条,通过的命令的方式查看下我们要导出的数据信息

    > db.bike.find().count()
    16878865
    > db.bike.find({"source":"ofo"}).limit(1)
    { "_id" : ObjectId("59e8c27804390e04a063159d"), "lat" : 39.9571954199, "bikeId" : "pgdAVg", "current_time" : "2017-10-19 23:19:19", "source" : "ofo", "lng" : 116.3926501736 }
    > 

    如何通过mongoexport导出"bikeId" : "pgdAVg"的数据,我导出了json和csv两种类型的数据;

    #导出类型为json,数据库:mapdb,集合:bike 字段:bikeId,lat,lng,current_time,source ,条件为source字段为ofo第一条数据
    mongoexport --port 27030 -u sa -p Expressin@0618 -d mapdb -c bike -f bikeId,lat,lng,current_time,source --type=json -o bike.csv --query='{"source":"ofo"}' --limit=1
    #导出类型为csv,数据库:mapdb,集合:bike 字段:bikeId,lat,lng,current_time,source ,条件为source字段为ofo第一条数据
    mongoexport --port 27030 -u sa -p Expressin@0618 -d mapdb -c bike -f bikeId,lat,lng,current_time,source --type=csv -o bike.csv --query='{"source":"ofo"}' --limit=1

    查看下结果是否是我们两种不同的结果集;

    1.导出csv类型;

    2.导出json类型;

    二、导入工具mongoimport 简介,通过帮助先了解下mongoimport的功能参数

    复制代码
    [root@iZ2ze4b308vd83fulq9n7iZ ~]# mongoimport --help
    Usage:
      mongoimport <options> <file>
    
    Import CSV, TSV or JSON data into MongoDB. If no file is provided, mongoimport reads from stdin.
    
    See http://docs.mongodb.org/manual/reference/program/mongoimport/ for more information.
    
    general options:
          --help                     print usage
          --version                  print the tool version and exit
    
    verbosity options:
      -v, --verbose                  more detailed log output (include multiple times for more verbosity, e.g. -vvvvv)
          --quiet                    hide all log output
    
    connection options:
      -h, --host=                    mongodb host to connect to (setname/host1,host2 for replica sets)
          --port=                    server port (can also use --host hostname:port)
    
    authentication options:
      -u, --username=                username for authentication
      -p, --password=                password for authentication
          --authenticationDatabase=  database that holds the user's credentials
          --authenticationMechanism= authentication mechanism to use
    
    namespace options:
      -d, --db=                      database to use
      -c, --collection=              collection to use
    
    input options:
      -f, --fields=                  comma separated list of field names, e.g. -f name,age
          --fieldFile=               file with field names - 1 per line
          --file=                    file to import from; if not specified, stdin is used
          --headerline               use first line in input source as the field list (CSV and TSV only)
          --jsonArray                treat input source as a JSON array
          --type=                    input format to import: json, csv, or tsv (defaults to 'json')
    
    ingest options:
          --drop                     drop collection before inserting documents
          --ignoreBlanks             ignore fields with empty values in CSV and TSV
          --maintainInsertionOrder   insert documents in the order of their appearance in the input source
      -j, --numInsertionWorkers=     number of insert operations to run concurrently (defaults to 1)
          --stopOnError              stop importing at first insert/upsert error
          --upsert                   insert or update objects that already exist
          --upsertFields=            comma-separated fields for the query part of the upsert
          --writeConcern=            write concern options e.g. --writeConcern majority, --writeConcern '{w: 3, wtimeout: 500, fsync: true, j: true}' (defaults to 'majority')
    复制代码

    关键参数说明:

    • h,--host :代表远程连接的数据库地址,默认连接本地Mongo数据库;
    • --port:代表远程连接的数据库的端口,默认连接的远程端口27017;
    • -u,--username:代表连接远程数据库的账号,如果设置数据库的认证,需要指定用户账号;
    • -p,--password:代表连接数据库的账号对应的密码;
    • -d,--db:代表连接的数据库;
    • -c,--collection:代表连接数据库中的集合;
    • -f, --fields:代表导入集合中的字段;
    • --type:代表导入的文件类型,包括csv和json,tsv文件,默认json格式;
    • --file:导入的文件名称
    • --headerline:导入csv文件时,指明第一行是列名,不需要导入;

    实例演示:

    复制代码
    #首先查看集合中的数据
    > db.bike_bak.find()
    { "_id" : ObjectId("59e8c27804390e04a063159d"), "lat" : 39.9571954199, "bikeId" : "pgdAVg", "current_time" : "2017-10-19 23:19:19", "source" : "ofo", "lng" : 116.3926501736 }
    #删除集合中的数据
    > db.bike_bak.remove({"bikeId" : "pgdAVg"})
    WriteResult({ "nRemoved" : 1 })
    #查看集合是否包含数据
    > db.bike_bak.find()
    > 
    #导入数据
    [root@iZ2ze4b308vd83fulq9n7iZ ~]# mongoimport --port 27030 -u sa -p Expressin@0618 -d mapdb -c bike_bak  --type=json --file bike.csv
    2017-10-25T11:59:51.020+0800    connected to: localhost:27030
    2017-10-25T11:59:51.030+0800    imported 1 document
    #检查数据是否导入成功
    > db.bike_bak.find()
    { "_id" : ObjectId("59e8c27804390e04a063159d"), "bikeId" : "pgdAVg", "current_time" : "2017-10-19 23:19:19", "lat" : 39.9571954199, "lng" : 116.3926501736, "source" : "ofo" }
    复制代码

     测试过程中发现--headerline -f bikeId 同时存在会报错,提示不兼容,目前不知道如何处理。

    整理自:

    https://www.cnblogs.com/shelly520/p/9628790.html

    https://www.cnblogs.com/mengyu/p/7718311.html

  • 相关阅读:
    LeetCoded第239题题解--滑动窗口最大值
    LeetCoded第739题题解--每日温度
    网络流-最大流 Dinic模板
    虚树模板
    UVALive
    UVALive
    hdu6000 Wash ccpc-20162017-finals B Wash
    Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) B. Divisiblity of Differences
    Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) C. Classroom Watch
    Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) D. Sorting the Coins
  • 原文地址:https://www.cnblogs.com/xibuhaohao/p/11250275.html
Copyright © 2011-2022 走看看