资讯专栏INFORMATION COLUMN

MongoDB数据导入导出工具详解

社区管理员 / 328人阅读

一、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" }


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128167.html

相关文章

  • MongoDB备份与恢复

    一、Mongodb导入导出 1.1、导出工具:mongoexport 概念: mongoDB中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出数据项,也可以根据指定的条件导出数据。 语法: mongoexport -d dbname ...

    2450184176 评论0 收藏0
  • Mongodb数据导出导入

    最近升级mongodb库的过程中遇到了数据导入导出问题。查了一下,目前mongodb自带的导入导出工具还是比较好用的,我操作库的时候主要用了下面两个: 1.导入导出json格式,方便解析,可以给其他业务使用 导出: mongoexport --ho...

    Aceyclee 评论0 收藏0
  • mongodb数据库恢复备份

    ...到有这四个工具的文件下,一般这四个文件是在 /usr/local/mongodb/bin下() 一、数据库的备份恢复 数据库备份e.g:从本机把dataSummary数据导出到上级目录 ./mongodump -h 127.0.0.1:27017 -d dataSummary -o ../ 1.-h 主机加端口 2.-d 数据库名称 3.-o...

    30e8336b8229 评论0 收藏0
  • MongoDB常用命令

    启动MongoDB $mongod --fork --logpath=/data/log/r3.log--fork 允许mongod后台运行,但是必须指定日志记录文件路径(Enables a daemon mode that runs the mongos process in the background.)--logpath 指定日志记录文件路径 导出Collections $mongoexport -d test -c user -o...

    joywek 评论0 收藏0
  • mongoDB运维篇②】备份与恢复(导入导出)

    导入/导出可以操作的是本地的mongodb服务器,也可以是远程的服务器所以,都有如下通用选项: -h host 主机 --port port 端口 -u username 用户名 -p passwd 密码 mongoexport 导出 -d 库名 -c 表名 -f field1,field2...列名 -q 查询条件 -o 导出...

    lakeside 评论0 收藏0

发表评论

0条评论

社区管理员

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<