栏目头部广告

MongoDB数据导入导出工具详解

一、MongoDB mongoimport与mongoexport工具介绍

1.1 mongoexport参数介绍

Mongodb中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出的数据项,也可以根据指定的条件导出数据。

-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。

1.2 mongoimport参数介绍

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

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

二、操作演示

2.1 生成测试数据

# 批量插入数据
> for (var i = 1; i <= 1000; i++) {
    db.starcto.insert( { x : i , name: "A", name1:"B", name2:"C", name3:"D"} )
}

# 统计文档中记录数量
> db.starcto.count()
1000

# 查看前9条文档记录
> db.starcto.find().limit(9)
{ "_id" : ObjectId("615193319768c94af0d82a75"), "x" : 1, "name" : "A", "name1" : "B", "name2" : "C", "name3" : "D" }
{ "_id" : ObjectId("615193319768c94af0d82a76"), "x" : 2, "name" : "A", "name1" : "B", "name2" : "C", "name3" : "D" }
{ "_id" : ObjectId("615193319768c94af0d82a77"), "x" : 3, "name" : "A", "name1" : "B", "name2" : "C", "name3" : "D" }
{ "_id" : ObjectId("615193319768c94af0d82a78"), "x" : 4, "name" : "A", "name1" : "B", "name2" : "C", "name3" : "D" }
{ "_id" : ObjectId("615193319768c94af0d82a79"), "x" : 5, "name" : "A", "name1" : "B", "name2" : "C", "name3" : "D" }
{ "_id" : ObjectId("615193319768c94af0d82a7a"), "x" : 6, "name" : "A", "name1" : "B", "name2" : "C", "name3" : "D" }
{ "_id" : ObjectId("615193319768c94af0d82a7b"), "x" : 7, "name" : "A", "name1" : "B", "name2" : "C", "name3" : "D" }
{ "_id" : ObjectId("615193319768c94af0d82a7c"), "x" : 8, "name" : "A", "name1" : "B", "name2" : "C", "name3" : "D" }
{ "_id" : ObjectId("615193319768c94af0d82a7d"), "x" : 9, "name" : "A", "name1" : "B", "name2" : "C", "name3" : "D" }

2.2 mongoexport数据导出

(1)导出类型为json、数据库为ucloud、集合为starcto 、条件为x字段为8的一条数据

[root@ansible ~]# mongoexport -h192.168.0.104 --port 27017 -uroot -pUcloudcn --authenticationDatabase=admin -d ucloud -c starcto  --type=json -o starcto.json --query='{"x":8}' --limit=1
2021-09-27T18:00:24.155+0800	connected to: 192.168.0.104:27017
2021-09-27T18:00:24.157+0800	exported 1 record

[root@ansible ~]# cat starcto.json 
{"_id":{"$oid":"615193319768c94af0d82a7c"},"x":8.0,"name":"A","name1":"B","name2":"C","name3":"D"}

(2)导出类型为csv、数据库为ucloud、集合为starcto 、条件为x字段为5的一条数据

[root@ansible ~]# mongoexport -h192.168.0.104 --port 27017 -uroot -pUcloudcn --authenticationDatabase=admin -d ucloud -c starcto  -f name,name1,name2 --type=csv -o starcto.csv --query='{"x":5}' --limit=1

[root@ansible ~]# cat starcto.csv 
name,name1,name2
A,B,C

【注意】CSV格式需要-f 指定输出字段,否则会报错。

(3)常规导出数据库为ucloud、集合为starcto 、条件为x字段为6的一条数据

[root@ansible ~]# mongoexport -h192.168.0.104 --port 27017 -uroot -pUcloudcn --authenticationDatabase=admin -d ucloud -c starcto  -o starcto.bak --query='{"x":6}' --limit=1
2021-09-27T18:54:25.218+0800	connected to: 192.168.0.104:27017
2021-09-27T18:54:25.220+0800	exported 1 record

[root@ansible ~]# cat starcto.bak 
{"_id":{"$oid":"615193319768c94af0d82a7a"},"x":6.0,"name":"A","name1":"B","name2":"C","name3":"D"}

2.3 mongoimport数据导入

(1)导入json文件到数据库为ucloud、集合为stargao

[root@ansible ~]# mongoimport -h192.168.0.104 --port 27017 -uroot -pUcloudcn --authenticationDatabase=admin -d ucloud -c stargao --type=json --file starcto.json
2021-09-27T19:00:31.205+0800	connected to: 192.168.0.104:27017
2021-09-27T19:00:31.241+0800	imported 1 document

# 查看导入数据情况
> use ucloud
switched to db ucloud
> show collections
starcto
stargao
> db.stargao.find()
{ "_id" : ObjectId("615193319768c94af0d82a7c"), "x" : 8, "name" : "A", "name1" : "B", "name2" : "C", "name3" : "D" }

(2)导入csv文件到数据库为ucloud、集合为stargao

[root@ansible ~]#  mongoimport -h192.168.0.104 --port 27017 -uroot -pUcloudcn --authenticationDatabase=admin -d ucloud -c stargao --type=csv --headerline --file starcto.csv
2021-09-27T19:03:53.100+0800	connected to: 192.168.0.104:27017
2021-09-27T19:03:53.168+0800	imported 1 document

> db.stargao.find()
{ "_id" : ObjectId("615193319768c94af0d82a7c"), "x" : 8, "name" : "A", "name1" : "B", "name2" : "C", "name3" : "D" }
{ "_id" : ObjectId("6151a519c8003237a4a6dd2e"), "name" : "A", "name1" : "B", "name2" : "C" }

【注意】导入csv文件到数据库,这里必须增加--headerline参数。

(3)常规导入备份文件到数据库为ucloud、集合为stargao

[root@ansible ~]# mongoimport -h192.168.0.104 --port 27017 -uroot -pUcloudcn --authenticationDatabase=admin -d ucloud -c stargao starcto.bak
2021-09-27T19:08:27.442+0800	connected to: 192.168.0.104:27017
2021-09-27T19:08:27.493+0800	imported 1 document

> db.stargao.find()
{ "_id" : ObjectId("615193319768c94af0d82a7c"), "x" : 8, "name" : "A", "name1" : "B", "name2" : "C", "name3" : "D" }
{ "_id" : ObjectId("6151a519c8003237a4a6dd2e"), "name" : "A", "name1" : "B", "name2" : "C" }
{ "_id" : ObjectId("615193319768c94af0d82a7a"), "x" : 6, "name" : "A", "name1" : "B", "name2" : "C", "name3" : "D" }

作者:UStarGao
链接:https://www.starcto.com/mongodb/245.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

UCloud云平台推荐


UCloud新用户专属注册连接

UCloud CDN超值特惠专场

UCloud全球云主机(UHost/VPS)大促页面

UCloud快杰云主机大促页面

文章页广告

随便看看

栏目底部广告
`