• 售前

  • 售后

热门帖子
入门百科

MongoDB mongoexport工具的使用简介

[复制链接]
俺乃小潜mg 显示全部楼层 发表于 2021-8-14 14:55:01 |阅读模式 打印 上一主题 下一主题
目次


  • 01  根本先容
  • 02  常用参数
  • 03  下令
  • 04  履历值
  • 05  反领导入

01  根本先容


   mongoexport是一个数据导出的工具,使用的时候类似mysql中的select into outfile语法,可以将某个数据库中的数据以json大概csv的格式导出来。
我们可以通过直接连接mongos大概连接mongod来导出数据。如果你的集群是分片集群,连接mongos会导出全部分片上这个聚集的相关数据。

02  常用参数


-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的暗码
-d:指明数据库的名字
-c:指明collection的名字
-f:指明要导入那些列
--type:默认是json范例,可以导出csv范例
-o:指明要导出的文件名称,如果不指定,则导出到尺度输出
-q:查询过滤器,可以输入一个json,从而导出查询后的结果
上面的常用参数尚有对应的长参数选项,例如-h也可以输入--host代替。参数的具体先容,可以通过mongoexport --help获取到。

03  下令


1、导出数据库new下面的test聚集的number字段,下令如下:
  1. mongoexport --port=27016 -u "yeyz" --authenticationDatabase "admin" -p "123456" -d new -c test --fields=number -o /data/test.json
  2. 2021-02-23T22:09:52.481+0800 connected to: localhost:27016
  3. 2021-02-23T22:09:52.512+0800 exported 2000 records
复制代码
我们看下导出的结果:
  1. {"_id":{"$oid":"6006c46993a711b384cc8c92"},"number":1000.0}
  2. {"_id":{"$oid":"6006c46993a711b384cc8c93"},"number":1001.0}
  3. {"_id":{"$oid":"6006c46993a711b384cc8c94"},"number":1002.0}
  4. {"_id":{"$oid":"6006c46993a711b384cc8c95"},"number":1003.0}
  5. {"_id":{"$oid":"6006c46993a711b384cc8c96"},"number":1004.0}
  6. {"_id":{"$oid":"6006c46993a711b384cc8c97"},"number":1005.0}
  7. {"_id":{"$oid":"6006c46993a711b384cc8c98"},"number":1006.0}
  8. {"_id":{"$oid":"6006c46993a711b384cc8c99"},"number":1007.0}
  9. {"_id":{"$oid":"6006c46993a711b384cc8c9a"},"number":1008.0}
  10. {"_id":{"$oid":"6006c46993a711b384cc8c9b"},"number":1009.0}
  11. {"_id":{"$oid":"6006c46993a711b384cc8c9c"},"number":1010.0}
  12. {"_id":{"$oid":"6006c46993a711b384cc8c9d"},"number":1011.0}
  13. {"_id":{"$oid":"6006c46993a711b384cc8c9e"},"number":1012.0}
复制代码
可以看到,纵然我们只指定了number字段,也会自动为我们导出_id字段,由此可以得出结论,:如果导出的格式是json范例的,_id字段是默认导出的。
默认导出的范例是json范例,如果我们想导出csv范例,可以增长--type=csv参数。添加了这个参数之后,结果如下:
  1. number
  2. 1000
  3. 1001
  4. 1002
  5. 1003
  6. 1004
  7. 1005
  8. 1006
  9. 1007
  10. 1008
  11. 1009
  12. 1010
  13. 1011
复制代码
可以看到,就不会自动的输出_id这个字段了。这个大概也是一个值得讨论的点。我认为大概是这个工具的一个小bug,csv范例不输出_id字段,而json范例输出_id字段。
2、导出某个特定的查询结果,例如导出number=10的那条纪录:
  1. [root@VM-0-14-centos ~]# mongoexport --port=27016 -u "yeyz" --authenticationDatabase "admin" -p "123456" -d new -c test --type=csv -q {"number":10} --fields=number -o /data/test.json
  2. 2021-02-23T22:38:18.319+0800 connected to: localhost:27016
  3. 2021-02-23T22:38:18.321+0800 exported 1 record
复制代码
可以直接在-q参数背面跟查询条件。

04  履历值


   本日的操纵是在分片集群上进行操纵的,一共7个分片,我导出了3亿多条数据,单个分片上大概5000w条数据吧,每条数据导出2个字段,每个分片上的导出时间大约在2个小时左右。
呆板硬件设置:
      
  • SATA硬盘4TB  
  • 普通内存128G  
  • intel 至强E5-4系列
当然,这个值只是个履历值,如果你的导出的字段比较多的话,大概字段的长度比较长,大概这个值没有太多的参考意义。
在现实进行数据导出的时候,发现实行导出的mongodb服务器负载有肯定上升,内存使用率有肯定上升,但是没有特殊明显性能抖动,整个过程不会锁数据库,以是还是比较安全的。
线上操纵的时候,尤其是针对敏感的业务,为了最洪流平上降低对业务的影响,如果你是在mongos上实行数据导出,发起先包管这个mongos对业务不可见,实行导出之后,在重新对外提供服务;如果你是在mongod上进行数据导出,则最好选择secondary节点进行,克制对线上业务的影响。

05  反领导入


   mongodb尚有一个工具,叫mongoimport,可以将mongoexport导出的数据导入到mongodb数据库中,下面是一个mongoimport的下令:
  1. [root@VM-0-14-centos ~]# mongoimport --port=27016 -u "yeyz" --authenticationDatabase "admin" -p "123456" -d new -c test1 --type=csv --fields=number --file=/data/test.csv
  2. 2021-02-23T22:44:21.930+0800 connected to: localhost:27016
  3. 2021-02-23T22:44:22.146+0800 imported 2001 documents
复制代码
  mongoimport的整个操纵类似insert操纵,参数方面和mongoexport大同小异,唯一多的比较重要的参数就是writeconcern的值,这个值设置的级别越高,那么导出数据的时间就越慢,但是数据安全性会越高。
具体内容请看官方文档对writeconcern的描述。
本日的内容就到这里。
以上就是MongoDB mongoexport工具的使用简介的具体内容,更多关于MongoDB mongoexport工具的使用的资料请关注草根技能分享别的相关文章!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作