MongoDB mongoexport工具的使用简介

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字段,命令如下:

mongoexport --port=27016 -u "yeyz" --authenticationDatabase "admin" -p "123456" -d new -c test --fields=number -o /data/test.json
2021-02-23T22:09:52.481+0800 connected to: localhost:27016
2021-02-23T22:09:52.512+0800 exported 2000 records

我们看下导出的结果:

{"_id":{"$oid":"6006c46993a711b384cc8c92"},"number":1000.0}
{"_id":{"$oid":"6006c46993a711b384cc8c93"},"number":1001.0}
{"_id":{"$oid":"6006c46993a711b384cc8c94"},"number":1002.0}
{"_id":{"$oid":"6006c46993a711b384cc8c95"},"number":1003.0}
{"_id":{"$oid":"6006c46993a711b384cc8c96"},"number":1004.0}
{"_id":{"$oid":"6006c46993a711b384cc8c97"},"number":1005.0}
{"_id":{"$oid":"6006c46993a711b384cc8c98"},"number":1006.0}
{"_id":{"$oid":"6006c46993a711b384cc8c99"},"number":1007.0}
{"_id":{"$oid":"6006c46993a711b384cc8c9a"},"number":1008.0}
{"_id":{"$oid":"6006c46993a711b384cc8c9b"},"number":1009.0}
{"_id":{"$oid":"6006c46993a711b384cc8c9c"},"number":1010.0}
{"_id":{"$oid":"6006c46993a711b384cc8c9d"},"number":1011.0}
{"_id":{"$oid":"6006c46993a711b384cc8c9e"},"number":1012.0}

可以看到,即使我们只指定了number字段,也会自动为我们导出_id字段,由此可以得出结论,:如果导出的格式是json类型的,_id字段是默认导出的。

默认导出的类型是json类型,如果我们想导出csv类型,可以增加--type=csv参数。添加了这个参数之后,结果如下:

number
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011

可以看到,就不会自动的输出_id这个字段了。这个可能也是一个值得讨论的点。我认为可能是这个工具的一个小bug,csv类型不输出_id字段,而json类型输出_id字段。

2、导出某个特定的查询结果,例如导出number=10的那条记录:

[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
2021-02-23T22:38:18.319+0800 connected to: localhost:27016
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的命令:

[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
2021-02-23T22:44:21.930+0800 connected to: localhost:27016
2021-02-23T22:44:22.146+0800 imported 2001 documents

mongoimport的整个操作类似insert操作,参数方面和mongoexport大同小异,唯一多的比较重要的参数就是writeconcern的值,这个值设置的级别越高,那么导出数据的时间就越慢,但是数据安全性会越高。

详细内容请看官方文档对writeconcern的描述。

今天的内容就到这里。

以上就是MongoDB mongoexport工具的使用简介的详细内容,更多关于MongoDB mongoexport工具的使用的资料请关注我们其它相关文章!

(0)

相关推荐

  • MongoDB执行mongoexport时的异常及分析(数字类型的查询)

    概述 mongoexport命令行用于数据的导出,默认导出的文件格式为JSON格式.当然也可以指定特定的文件格式. 语法 C:\mongo\bin>mongoexport -help options:   --help                  produce help message   -v [ --verbose ]        be more verbose (include multiple times for more                           v

  • MongoDB使用mongoexport和mongoimport命令,批量导出和导入JSON数据到同一张表的实例

    需求是这样的:需要修改数据库中某个表的所有数据,所以,要全部导出,然后修改,修改完之后,再把修改后的数据给再导入到mongo去. 具体如下: 备份,导出一张表为json文件 具体命令: mongoexport --host localhost --port 27017 --username ezsonaruser --password 123456 --collection host_locations --db ezsonar_25 --out /root/host_locations.jso

  • MongoDB mongoexport工具的使用简介

    01  基本介绍 mongoexport是一个数据导出的工具,使用的时候类似mysql中的select into outfile语法,可以将某个数据库中的数据以json或者csv的格式导出来. 我们可以通过直接连接mongos或者连接mongod来导出数据.如果你的集群是分片集群,连接mongos会导出所有分片上这个集合的相关数据. 02  常用参数 -h:指明数据库宿主机的IP -u:指明数据库的用户名 -p:指明数据库的密码 -d:指明数据库的名字 -c:指明collection的名字 -f

  • MongoDB.Net工具库MongoRepository使用方法详解

    MongoDB .Net工具库MongoRepository的简单使用. 最近研究了一下MongoDB数据库,并使用了开源的在.net环境下的一个类库,Mongo仓库.对于数据的一些简单的操作非常好用,特记录供后期参考. 具体的使用过程如下: 一.新建项目,在Nuget上获取库. 二.在配置文件中设置数据库地址 三.新建数据实体,并继承Entity,定义需要的字段 四.注意常见的几种字段属性的使用 [BsonElement("reName")] 用来重命名数据库中字段的名称. [Bso

  • MySQL pt-slave-restart工具的使用简介

    在MySQL主从复制环境的搭建中,常常会遇到一种场景,主库和从库都要初始化用户的账号密码,正常的情况下,需要在主库和从库都关闭session级别的binlog,然后再进行用户信息导入. 但是有时候会忽略关闭session级别binlog这个前置动作,例如在基于GTID的复制模式下,主从库都直接导入了用户的账号密码信息,主库和从库都将账号密码的事务记录到了自己的GTID中,此时我们如果利用GTID的方式搭建复制,会出现报错,因为从库已经有账号了,所以主库上同步到从库的用户信息会出现报错现象,提示用

  • k8s的包管理工具helm使用简介

    目录 Helm Helm是什么? Helm中一个很重要的元素:Chart 使用Helm 安装helm客户端注意点 通过二进制的方式安装helm客户端: 添加chart存储库 搜索chart存储库 安装一个chart 自定义配置安装 Helm Helm是什么? Helm是Kubernetes的软件包管理器,类似于yum.apt等包管理工具一样,Helm可以轻松的一键式部署出我们想要的应用. 编写Helm有三个主要目标: 1.轻松地实现从“从零到Kubernetes”: 2.提供与操作系统类似的软件

  • SpringBoot实现的Mongodb管理工具使用解析

    项目介绍 Mongodb网页管理工具,基于Spring Boot2.0,前端采用layerUI实现. 源于线上环境部署mongodb时屏蔽了外网访问mongodb,所以使用不了mongochef这样方便的远程连接工具,便Mongodb提供的java api实现的的网页版管理 未设置登录权限相关模块,低耦合性 方便嵌入到现有的项目 部署文档 https://a870439570.github.io/work-doc/mongdb 部分效果图如下 显示所有的数据源 显示指定数据源下的表 源码地址 h

  • MongoDB客户端工具NoSQL Manager for MongoDB介绍

    目录 一.安装 二.连接客户端 三.基本的日常操作 1.shell 2.日常数据增删改查 ① 可以在shell命令行执行. ② 也可以直接通过GUI来实现. 3.表复制 ① 数据库内复制表. ② 跨数据库复制表. 四.进阶篇 1.索引 2.备份还原和性能监控 备份 还原 性能查看 3.从其他关系型数据库(mysql,sqlserver)导数据导mongodb 在客户端工具方面,个人认为 NoSQL Manager for MongoDB 是体验比较好的一个,功能也较齐全. 一.安装 官方的下载地

  • MongoDB中javascript脚本编程简介和入门实例

    注:作者使用的mongodb版本为2.4.7. 入门例子 复制代码 代码如下: conn = new Mongo();db = conn.getDB("db-name");  //选择数据库db.auth("user-name","password");  //用户验证 var map = function() {    split_result = this.sentence.split(" ");    for (var

  • MongoDB特点与体系结构等简介

    1.1什么是MongoDB MongoDB 是一个跨平台的,面向文档的数据库,是当前 NoSQL 数据库产品中最热门的一种.它介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的产品.它支持的数据结构非常松散,是类似JSON 的 BSON 格式,因此可以存储比较复杂的数据类型. MongoDB 的官方网站地址是:http://www.mongodb.org/ 1.2 MongoDB特点 MongoDB 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查

  • node.js包管理工具Yarn使用简介

    Yarn是由Facebook.Google.Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 , 它主要是为了弥补 npm 的一些缺陷而出现的.和npm相比,它具有如下特点: 速度快 : 主要来自以下两个方面: 并行安装:并行执行所有任务,提高了性能. 离线模式:如果之前已经安装过一个软件包,再次安装时直接从缓存中获取. 安装版本统一:每一次拉取同一个项目依赖时,使用的都是一样的模块版本. 更简洁的输出: Yarn结合了 emoji直观且直接地打印出必要的信息,也提供了一些

随机推荐