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云平台推荐
随便看看
- 2022-03-01MySQL read_only与super_read_only参数解读
- 2021-05-29Rsync+sersync实现数据实时同步备份
- 2021-08-10开源对象存储服务MinIO容器化部署
- 2021-07-22MySQL主从同步延迟-大事务缺少索引
- 2021-02-12MySQL主从同步异常1864