mongoexport/mongimport命令详解

mongoexpot 命令参考文档:

https://docs.mongodb.com/v4.2/reference/program/mongoexport/

 

创建测试数据

use czg
for(i=1;i<=100;i++){db.t1.insert({id:i})}
for(i=1;i<=100;i++){db.t2.insert({id:i,name:"ceshi2"})}
for(i=1;i<=100;i++){db.t3.insert({id:i,name:"ceshi3"})}
for(i=1;i<=100;i++){db.a1.insert({id:i,name:"ceshi4"})}
db.t1.createIndex({id:1})
db.t1.createIndex({name:1})
db.t2.createIndex({id:1})
db.t2.createIndex({name:1})

db.createUser({user:'ceshi',pwd:'c123456', roles:[{role:'readWrite', db:'czg'}]})

 

 

1、mongoexport --help 命令详解

mongoexport
general options:
      --help                                                打印帮助信息
      --version                                             打印版本号

verbosity options:
  -v, --verbose=<level>                                     增加备份过程中日志详细程序,例如 -vvvv 打的日志最多
      --quiet                                               备份过程中不输出日志

connection options:
  -h, --host=<hostname>                                     连接地址 (setname/host1,host2 for replica sets)
      --port=<port>                                         端口号 可以 --host hostname:port(can also use --host hostname:port)

ssl options:
      --ssl                                                 connect to a mongod or mongos that has ssl enabled
      --sslCAFile=<filename>                                the .pem file containing the root certificate chain from the certificate authority
      --sslPEMKeyFile=<filename>                            the .pem file containing the certificate and key
      --sslPEMKeyPassword=<password>                        the password to decrypt the sslPEMKeyFile, if necessary
      --sslCRLFile=<filename>                               the .pem file containing the certificate revocation list
      --sslFIPSMode                                         use FIPS mode of the installed openssl library
      --tlsInsecure                                         bypass the validation for server's certificate chain and host name

authentication options:
  -u, --username=<username>                                 用户名
  -p, --password=<password>                                 密码
      --authenticationDatabase=<database-name>              指定验证库
      --authenticationMechanism=<mechanism>                 指定验证机制

kerberos options:
      --gssapiServiceName=<service-name>                    service name to use when authenticating using GSSAPI/Kerberos (default: mongodb)
      --gssapiHostName=<host-name>                          hostname to use when authenticating using GSSAPI/Kerberos (default: <remote server's
                                                            address>)

uri options:
      --uri=mongodb-uri                                     mongodb uri 连接信息

namespace options:
  -d, --db=<database-name>                                  导出库名称
  -c, --collection=<collection-name>                        导出集合名称
          
uri options:          
      --uri=mongodb-uri                                     mongodb uri 连接信息
          
output options:          
  -f, --fields=<field>[,<field>]*                           指定一个或多个列进行导出 -f "name,age"
      --fieldFile=<filename>                                --fields的替代参数,指定多个列到文件中,文件必须以0x0A结尾,仅对-type=csv时有效
      --type=<type>                                         输出格式,默认为json格式 (defaults to 'json')
  -o, --out=<filename>                                      输出文件,如果未指定,输出到当前屏幕
      --jsonArray                                           导出结果全部写入到单个json数组中,默认情况下,每条记录是一个json
      --pretty                                              以易读的格式输出文档。
      --noHeaderLine                                        在输出CSV格式时,第一行都是字段名称,使用这个参数后,将不写入字段名称
      --jsonFormat=<type>                                   提定输出模式为规范模式或宽松模式,默认为宽松模式
          
querying options:          
  -q, --query=<json>                                        指定查询条件进行过滤, '{x:{$gt:1}}'
      --queryFile=<filename>                                指定查询文件进行过滤 (JSON)
  -k, --slaveOk                                             3.2版本后已弃用 (default true)
      --readPreference=<string>|<json>                      读偏好设置
      --forceTableScan                                      force a table scan (do not use $snapshot or hint _id). Deprecated since this is default
                                                            behavior on WiredTiger
      --skip=<count>                                        控制从哪里开始导出数据
      --limit=<count>                                       限制导出条数
      --sort=<json>                                         导出结果进行排序,结果集必须小于32M e.g. '{x:1}'
      --assertExists                                        if specified, export fails if the collection does not exist

 

示例:

 

1.1 备份集合,默认为json文件

mongoexport -h 127.0.0.1:27017 --authenticationDatabase=admin -u root -p c123456 -d czg -c t2 -o /root/mongo_export/czg_t2.json

 

1.2 备份集合,存储为csv 文件,必须要指定导出列

mongoexport -h 127.0.0.1:27017 --authenticationDatabase=admin -u root -p c123456 -d czg -c t2 --type=csv --fields=id,name -o /root/mongo_export/czg_t2.csv

 

 

1.3 如果列比较多,保存成为一个文件,指定文件中的列进行导出

root@ip-172-31-30-45:~/mongo_export# cat fields.txt
id
name
----------------------分割线----------------------
mongoexport -h 127.0.0.1:27017 --authenticationDatabase=admin -u root -p c123456 -d czg -c t2 --type=csv --fieldFile=/root/mongo_export/fields.txt -o /root/mongo_export/czg_t2.csv

 

1.4 导出的csv文件默认带字段名称,使用--noHeaderLine 进行不显示字段名

mongoexport -h 127.0.0.1:27017 --authenticationDatabase=admin -u root -p c123456 -d czg -c t2 --type=csv --fields=id,name --noHeaderLine -o /root/mongo_export/czg_t2.csv

 

1.5 以uri信息连接数据库,导出数据

mongoexport --uri="mongodb://root:c123456@127.0.0.1:27017/czg?authsource=admin" -c t2 -o /root/mongo_export/czg_t2.json

 

 

1.6 以过滤条件导出数据

mongoexport -h 127.0.0.1:27017 --authenticationDatabase=admin -u root -p c123456 -d czg -c t2 -q='{"id":{"$gte":50}}' -o /root/mongo_export/czg_t2.json

 

 

1.7 限制导出条数

mongoexport -h 127.0.0.1:27017 --authenticationDatabase=admin -u root -p c123456 -d czg -c t2 -q='{"id":{"$gte":50}}' --limit=10 -o /root/mongo_export/czg_t2.json

 

 

 

 

2、

1、mongoexport --help 命令详解

general options:
      --help                                                打印帮助信息
      --version                                             打印版本号

verbosity options:
  -v, --verbose=<level>                                     增加备份过程中日志详细程序,例如 -vvvv 打的日志最多
      --quiet                                               备份过程中不输出日志

connection options:
  -h, --host=<hostname>                                     连接地址 (setname/host1,host2 for replica sets)
      --port=<port>                                         端口号 可以 --host hostname:port(can also use --host hostname:port)

ssl options:
      --ssl                                                 connect to a mongod or mongos that has ssl enabled
      --sslCAFile=<filename>                                the .pem file containing the root certificate chain from the certificate authority
      --sslPEMKeyFile=<filename>                            the .pem file containing the certificate and key
      --sslPEMKeyPassword=<password>                        the password to decrypt the sslPEMKeyFile, if necessary
      --sslCRLFile=<filename>                               the .pem file containing the certificate revocation list
      --sslFIPSMode                                         use FIPS mode of the installed openssl library
      --tlsInsecure                                         bypass the validation for server's certificate chain and host name

authentication options:
  -u, --username=<username>                                 用户名
  -p, --password=<password>                                 密码
      --authenticationDatabase=<database-name>              指定验证库
      --authenticationMechanism=<mechanism>                 指定验证机制

kerberos options:
      --gssapiServiceName=<service-name>                    service name to use when authenticating using GSSAPI/Kerberos (default: mongodb)
      --gssapiHostName=<host-name>                          hostname to use when authenticating using GSSAPI/Kerberos (default: <remote server's
                                                            address>)

uri options:
      --uri=mongodb-uri                                     mongodb uri 连接信息

namespace options:
  -d, --db=<database-name>                                  导出库名称
  -c, --collection=<collection-name>                        导出集合名称
          
uri options:          
      --uri=mongodb-uri                                     mongodb uri 连接信息
          
output options:          
  -f, --fields=<field>[,<field>]*                           指定一个或多个列进行导出 -f "name,age"
      --fieldFile=<filename>                                --fields的替代参数,指定多个列到文件中,文件必须以0x0A结尾,仅对-type=csv时有效
      --type=<type>                                         输出格式,默认为json格式 (defaults to 'json')
  -o, --out=<filename>                                      输出文件,如果未指定,输出到当前屏幕
      --jsonArray                                           导出结果全部写入到单个json数组中,默认情况下,每条记录是一个json
      --pretty                                              以易读的格式输出文档。
      --noHeaderLine                                        在输出CSV格式时,第一行都是字段名称,使用这个参数后,将不写入字段名称
      --jsonFormat=<type>                                   提定输出模式为规范模式或宽松模式,默认为宽松模式
          
querying options:          
  -q, --query=<json>                                        指定查询条件进行过滤, '{x:{$gt:1}}'
      --queryFile=<filename>                                指定查询文件进行过滤 (JSON)
  -k, --slaveOk                                             3.2版本后已弃用 (default true)
      --readPreference=<string>|<json>                      读偏好设置
      --forceTableScan                                      force a table scan (do not use $snapshot or hint _id). Deprecated since this is default
                                                            behavior on WiredTiger
      --skip=<count>                                        控制从哪里开始导出数据
      --limit=<count>                                       限制导出条数
      --sort=<json>                                         导出结果进行排序,结果集必须小于32M e.g. '{x:1}'
      --assertExists                                        if specified, export fails if the collection does not exist

 

 

2.1 将 czg_t2.json 文件导入到 czg库,tt2集合中

mongoimport -h 127.0.0.1:27017 --authenticationDatabase=admin -u root -p c123456 -d czg -c tt2 /root/mongo_export/czg_t2.json

 

 

2.2 将 czg_t2.json 文件导入到 czg库,tt2集合中,如果遇到冲突,则覆盖写

mongoimport -h 127.0.0.1:27017 --authenticationDatabase=admin -u root -p c123456 -d czg -c tt2 --mode=upsert /root/mongo_export/czg_t2.json

 

2.3 将czg_t2.csv 文件导入到 czg库,tt2_csv集合中,导入时必须指定列名称 (如果备份文件第一行是列名称,也会被当成数据导入到数据库中)

mongoimport -h 127.0.0.1:27017 --authenticationDatabase=admin -u root -p c123456 -d czg -c tt2_csv --type=csv --fields=id,name /root/mongo_export/czg_t2.csv

 

2.4 将czg_t2.csv 文件导入到 czg库,tt2_csv集合中,使用 --headerline 参数,使用csv文件第一行做为字段名称

mongoimport -h 127.0.0.1:27017 --authenticationDatabase=admin -u root -p c123456 -d czg -c tt2_csv --type=csv --headerline /root/mongo_export/czg_t2.csv

 

2.5 不带-c参数导入数据,会使用文件名做为集合名,导入后集合名称为 czg_t2

mongoimport -h 127.0.0.1:27017 --authenticationDatabase=admin -u root -p c123456 -d czg --type=csv --headerline /root/mongo_export/czg_t2.csv

 

2.6 导入数据时,指定字段类型进行导入 (注意:csv文件第一行不要有字段名称)

mongoimport -h 127.0.0.1:27017 --authenticationDatabase=admin -u root -p c123456 -d czg -c tt2_types --type=csv --columnsHaveTypes --fields="id.int32(),name.string()" /root/mongo_export/czg_t2.csv

 

2.7 导入数据时,忽略掉csv文件中的空白字段

创建一些测试数据
root@ip-172-31-30-45:~/mongo_export# cat test.txt
id,name,age
1,,
2,chai,10
3,,20

----------------分割线-------------------
mongoimport -h 127.0.0.1:27017 --authenticationDatabase=admin -u root -p c123456 -d czg -c t_ignore --type=csv --fields=id,name --ignoreBlanks /root/mongo_export/test.txt

 

其它:

导出数据,条件中指定时间过滤,需要注意

posted on 2021-09-16 20:00  柴米油盐酱醋  阅读(1346)  评论(0编辑  收藏  举报

导航