zoukankan      html  css  js  c++  java
  • Mongo的导出工具mongoexport介绍

    需求介绍:将mongodb中的数据以文件的方式导出:json或cvs格式

    mongo 提供了mongoexport的工具,可以实现将库中的数据以json或cvs的格式输出到文件中。mongoexport位于mongo安装位置中的bin/目录下。

    mongoexport具体用法如下所示:

    1. 使用help查看参数说明

    复制代码
    E:data                                                                                 
    λ 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}'             
    复制代码

    2. 用例说明:

    将info库中student的所有信息以json格式导出到student_json.dat数据文件中

    mongoexport -h 127.0.0.1 -u root -p 12345 -d info -c student --type=json -o E:datastudent_json.dat

    输出:

    复制代码
    {
        "id": 123,
        "name": "张三",
        "age": 12
    }
    {
        "id": 124,
        "name": "李四",
        "age": 15
    }
    复制代码

    将info库中student的id,name信息以json格式导出到student_json.dat数据文件中,并且限定“行数”是1

    mongoexport -h 127.0.0.1 -u root -p 12345 -d info -c student --type=json -f id,name --limit=1 -o E:datastudent_json.dat

    输出:

    {
        "id": 1,
        "name": "张三"
    }

    将info库中student的所有信息以cvs格式导出到student_cvs.dat数据文件中

    mongoexport -h 127.0.0.1 -u root -p 12345 -d info -c student --type=cvs  -o E:datastudent_cvs.dat

    输出:

    123,"张三",12
    124,"李四",15

    将info库student“表”的name=张三的信息以cvs格式导出到student_cvs.dat数据文件中

    mongoexport -h 127.0.0.1 -u root -p 12345 -d info -c student --type=cvs -q{"name":"张三"} -o E:datastudent_cvs.dat

    输出:

    123,"张三",12

     注意:

    a. --type=json 只是控制每一条“记录”是json格式,而整体的输出文件不是json 。如果想要控制整体的文件数据格式是json数组,则需要使用--jsonArray 参数控制

    扩展:

    导入工具mongoimport

    Mongodb中的mongoimport工具可以把一个特定格式文件中的内容导入到指定的collection中。该工具可以导入JSON格式数据,也可以导入CSV格式数据。具体使用如下所示:

    复制代码
    E:data
    λ 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:指明数据库宿主机的IP

    -u:指明数据库的用户名

    -p:指明数据库的密码

    -d:指明数据库的名字

    -c:指明collection的名字

    -f:指明要导入那些列

    示例:先删除students中的数据,并验证

    > db.students.remove()
    > db.students.find()
    >
    然后再导入上面导出的students.dat文件中的内容

    mongoimport -d test -c students students.dat 
    connected to: 127.0.0.1
    imported 9 objects

    参数说明:

    -d:指明数据库名,本例中为test

    -c:指明collection名,本例中为students

    students.dat:导入的文件名

    查询students集合中的数据

    复制代码
    > db.students.find()
    { "_id" : ObjectId("5031143350f2481577ea81e5"), "classid" : 1, "age" : 20, "name" : "kobe" }
    { "_id" : ObjectId("5031144a50f2481577ea81e6"), "classid" : 1, "age" : 23, "name" : "nash" }
    { "_id" : ObjectId("5031145a50f2481577ea81e7"), "classid" : 2, "age" : 18, "name" : "james" }
    { "_id" : ObjectId("5031146a50f2481577ea81e8"), "classid" : 2, "age" : 19, "name" : "wade" }
    { "_id" : ObjectId("5031147450f2481577ea81e9"), "classid" : 2, "age" : 19, "name" : "bosh" }
    { "_id" : ObjectId("5031148650f2481577ea81ea"), "classid" : 2, "age" : 25, "name" : "allen" }
    { "_id" : ObjectId("5031149b50f2481577ea81eb"), "classid" : 1, "age" : 19, "name" : "howard" }
    { "_id" : ObjectId("503114a750f2481577ea81ec"), "classid" : 1, "age" : 22, "name" : "paul" }
    { "_id" : ObjectId("503114cd50f2481577ea81ed"), "classid" : 2, "age" : 24, "name" : "shane" }
    > 
    复制代码

    证明数据导入成功

    上面演示的是导入JSON格式的文件中的内容,如果要导入CSV格式文件中的内容,则需要通过--type参数指定导入格式,具体如下所示:

    先删除数据

    > db.students.remove()
    > db.students.find()
    > 

    再导入之前导出的students_csv.dat文件

    mongoimport -d test -c students --type csv --headerline --file students_csv.dat 
    connected to: 127.0.0.1
    imported 10 objects

    参数说明:

    -type:指明要导入的文件格式

    -headerline:指明第一行是列名,不需要导入

    -file:指明要导入的文件

    查询students集合,验证导入是否成功:

    复制代码
    > db.students.find()
    { "_id" : ObjectId("503266029355c632cd118ad8"), "classid" : 1, "name" : "kobe", "age" : 20 }
    { "_id" : ObjectId("503266029355c632cd118ad9"), "classid" : 1, "name" : "nash", "age" : 23 }
    { "_id" : ObjectId("503266029355c632cd118ada"), "classid" : 2, "name" : "james", "age" : 18 }
    { "_id" : ObjectId("503266029355c632cd118adb"), "classid" : 2, "name" : "wade", "age" : 19 }
    { "_id" : ObjectId("503266029355c632cd118adc"), "classid" : 2, "name" : "bosh", "age" : 19 }
    { "_id" : ObjectId("503266029355c632cd118add"), "classid" : 2, "name" : "allen", "age" : 25 }
    { "_id" : ObjectId("503266029355c632cd118ade"), "classid" : 1, "name" : "howard", "age" : 19 }
    { "_id" : ObjectId("503266029355c632cd118adf"), "classid" : 1, "name" : "paul", "age" : 22 }
    { "_id" : ObjectId("503266029355c632cd118ae0"), "classid" : 2, "name" : "shane", "age" : 24 }
    > 
    复制代码

    说明已经导入成功

  • 相关阅读:
    cocos2d-x simpleGame 0
    cocos2d-x 下的HelloWorld
    cocos2d-x windows 配置
    算术入门之加减乘除
    计算摄氏温度
    输出倒三角图案
    厘米换算英尺英寸
    多文件模块的学生信息库系统
    GPS数据处理
    单词长度
  • 原文地址:https://www.cnblogs.com/seasonzone/p/14523347.html
Copyright © 2011-2022 走看看