MongoDB单表数据的导出和恢复实例讲解

MongoDB 是一个跨平台的,面向文档的数据库,提供高性能,高可用性和可扩展性方便。 MongoDB 工作在收集和文件的概念。

数据库

数据库是一个物理容器集合。每个数据库都有自己的一套文件系统上的文件。一个单一的MongoDB服务器通常有多个数据库。

集合

集合是一组MongoDB的文档。它相当于一个RDBMS表。收集存在于一个单一的数据库。集合不执行模式。集合内的文档可以有不同的领域。通常情况下,一个集合中的所有文件是相同或相关的目的。

文档

文档是一组键 - 值对。文件动态模式。动态模式是指,在相同集合中的文档不需要具有相同的字段或结构组的公共字段的集合的文档,可以容纳不同类型的数据。

1. 单表数据的导出

针对单表数据的导出操作,MongoDB 提供了 mongoexport 命令。mongoexport 既可以将数据导出为 CSV 格式的文件,也可以导出 JSON 格式的文件。这两者之间的区别是:

JSON 是 mongoexport 默认的导出格式,不需要指定,而要导出 CSV 格式的话需要明确指定;导出 CSV 格式必须显式指定各属性名,而导出 JSON 格式不需要。由此可见导出 JSON 格式更灵活、更方便,而且对于复杂的表结构还不会有属性丢失的风险,因此笔者比较倾向于这种导出格式。本文示例用的就是这种格式。

trans.sp 表结构如下:

{
"_id" : ObjectId("56ea7cc7ec8d83257c013844"),
"orderNum" : "804918166317174541239",
"sysOrderNum" : "43fd399715df4e874c773373c422a896",
"respCode" : "09",
"merId" : "991653448160401",
"transAmt" : NumberLong(300),
"transStatus" : "10",
"transType" : NumberInt(1),
"chanMerId" : "1244891002",
"chanCode" : "WXP",
"createTime" : "2016-03-17 17:45:43",
"updateTime" : "2016-03-17 17:45:43",
"refundStatus" : NumberInt(0),
"fee" : NumberLong(2),
"netFee" : NumberLong(2),
"tradeFrom" : "openapi",
"lockFlag" : NumberInt(0),
"settRole" : "WXP",
"currency" : "CNY",
"busicd" : "PAUT",
"agentCode" : "25911283",
"qrCode" : "weixin://wxpay/bizpayurl?pr=lh73Vjt",
"terminalid" : "802918",
"errorDetail" : "处理中",
"goodsInfo" : "双山趣儿85g,3.0,1",
"discountAmt" : NumberLong(0),
"merName" : "云高科技服务有限公司",
"agentName" : "白山机构"
}

使用 mongoexport 将该表导出:

$ mongoexport --host localhost --port 27017 --username quicktest --password quicktest --collection trans.sp --db quicktest --out trans.sp.json
2016-03-14T14:23:36.985+0800 connected to: localhost:27017
2016-03-14T14:29:28.085+0800 exported 2823382 records

trans.sp.json 大小为 2.6 G,共计两百八十万条记录,本次导出耗时 6 分钟。各参数具体说明:
--host 后的 localhost:要导出数据库 ip--port 后的 27017:要导出的实例节点端口号--username 后的 quicktest:数据库用户名--password 后的 quicktest:数据库用户密码--collection 后的 trans.sp:要导出的表名--db 后的 quicktest:要导出的表所在数据库名--out 后的 trans.sp.json:要导出的文件路径(默认为当前文件夹)

2. 单表数据的导入

有借有还,MongoDB 提供了与 mongoexport 命令相对应命令 mongoimport。以下是导入命令:
$ mongoimport --host localhost --port 27019 --username quicktest --password quicktest --collection trans.sp --db quicktest --file /opt/kdf/trans.sp.json
2016-03-17T18:15:33.909+0800 connected to: localhost:27019
2016-03-17T18:15:36.888+0800 [........................] quicktest.trans.sp 1
5.0 MB/2.5 GB (0.6%)

各参数具体说明:

-- host 后的 localhost:要导入的数据库 ip--port 后的 27019:要导入的实例节点端口号--username 后的 quicktest:数据库用户名--password 后的 quicktest:数据库用户密码--collection 后的 trans.sp:要导入的表名--db 后的 quicktest:要导入的表所在数据库名--file 后的 /opt/kdf/trans.sp.json:要导入的源文件路径(默认为当前文件夹)就这么简单。
但是有一些地方还是需要注意一下的:

mongoimport 执行导入前,新数据库中没有 trans.sp 表一样可以导入成功;mongoexport 和 mongoimport 所需的各个参数输入的先后顺序不严格;对于副本集,mongoexport 的数据导出可以是副本集中的 primary 节点,也可以是 secondary 节点;对于副本集,mongoimport 的数据导入必须是 primary 节点;对于大数据量的导出,用 mongoexport 操作完全不会有生产问题;对于大数据量的导入(超过 500 MB),用 mongoimport 操作的话会很容易将 primary 节点拖垮,因为这会导致全量同步导致主节点崩溃,所以要避免生产环境中大数据量的导入。正确的做法是先建立单点,导入,之后再建立副本集。本文示例中所用 MongoDB 版本号为 3.2.1。

关于MongoDB单表数据的导出和恢复实例讲解知识就给大家介绍到这里,希望对大家有所帮助!

(0)

相关推荐

  • MongoDB备份、还原、导出、导入、克隆操作示例

    数据库备份 – mongodump 备份本地所有MongoDB数据库: 复制代码 代码如下: # mongodump -h 127.0.0.1 --port 27017 -o /root/db/alldb 备份远程指定数据库: 复制代码 代码如下: # mongodump -h 192.168.1.233 --port 27018 -d yourdb -o /root/db/yourdb 更多mongodump详解 数据库还原-mongorestore 恢复所有数据库到MongoDB中: 复制代

  • MongoDB整库备份与还原以及单个collection备份、恢复方法

    mongodump.exe备份的原理是通过一次查询获取当前服务器快照,并将快照写入磁盘中,因此这种方式保存的也不是实时的,因为在获取快照后,服务器还会有数据写入,为了保证备份的安全,同样我们还是可以利用fsync锁使服务器数据暂时写入缓存中. 高效开源数据库(mongodb)下载地址:http://www.jb51.net/softs/41751.html 备份前的检查> show dbsMyDB 0.0625GBadmin (empty)bruce 0.0625GBlocal (empty)t

  • 浅谈MongoDB的备份方式

    简要说一下MongoDB的备份方式: 1. mogodump / mongorestore 这2命令将mongodb的数据dump为BSON格式,需要的时候可以恢复. 这种方式作为小的数据库还适用.但如果是sharding或者几百G数据以上的话 就几乎不可用了.因为BSON及其占用空间. 2. Slave Replication 这是最适合和可靠的,适合生产环境.MongoDb支持master+多个slave.因此可以很方便的起一个slave来进行备份. 但是需要注意的是如果数据量很大的话,如果

  • MongoDB使用自带的命令行工具进行备份和恢复的教程

    要备份一个数据库, mongorestore -d db /path/to/back_up 例如: mongodump -d bookstore -o /data01/db_backup/ 该命令会dump出该DB所有的collection 从备份文件夹恢复数据 mongorestore -d bookstore /data01/db_backup/bookstore 只备份或回复指定的collection 以bookstore DB 中statistics 表为例 mongodump -d b

  • mongodb 数据库操作--备份 还原 导出 导入

    一,mongodump备份数据库 1,常用命令格 mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径 如果没有用户谁,可以去掉-u和-p. 如果导出本机的数据库,可以去掉-h. 如果是默认端口,可以去掉--port. 如果想导出所有数据库,可以去掉-d. 2,导出所有数据库 [root@localhost mongodb]# mongodump -h 127.0.0.1 -o /home/zhangy/mongodb/ connecte

  • Windows下自动备份MongoDB的批处理脚本

    这段批处理代码用于在Windows服务器上自动备份Mongodb数据库,每次备份会自动创建一个备份文件夹 1.编写一个bat文件,文件内容如下: 复制代码 代码如下: @ECHO OFF md D:\deployment\mongoDb\data\backup\%date:~0,4%-%date:~5,2%-%date:~8,2%\%time:~0,2%-%time:~3,2% mongodump -h 192.168.0.198 -d rssapp -o D:\deployment\mongo

  • Mongodb数据库的备份与恢复操作实例

    写在前面 本文已经假设你已经安装好了Mongodb(2.6),并且已经开启了auth. 用户 首先我们添加备份和恢复数据所需的用户,这个用户需要有readWrite和userAdmin权限 复制代码 代码如下: $ mongo $ use admin $ db.auth("admin", "youradminpasswd"); $ use backupdb $ db.addUser({ user: "backup", pwd: "pas

  • Windows或Linux系统中备份和恢复MongoDB数据的教程

    windows下面mongodb数据库备份和恢复 我可以讲数据备份到c:\data\dump目录下面,首先创建这个路径.然后进入到mongodb的bin目录下面 我的是: C:\Program Files\mongodb\bin 备份脚本是: //备份 mongodump -h 127.0.0.1:27017 -d test -o c:\data\dump 恢复脚本是: //恢复 mongorestore -h 127.0.0.1:27017 -d test --directoryperdb c

  • MongoDB单表数据的导出和恢复实例讲解

    MongoDB 是一个跨平台的,面向文档的数据库,提供高性能,高可用性和可扩展性方便. MongoDB 工作在收集和文件的概念. 数据库 数据库是一个物理容器集合.每个数据库都有自己的一套文件系统上的文件.一个单一的MongoDB服务器通常有多个数据库. 集合 集合是一组MongoDB的文档.它相当于一个RDBMS表.收集存在于一个单一的数据库.集合不执行模式.集合内的文档可以有不同的领域.通常情况下,一个集合中的所有文件是相同或相关的目的. 文档 文档是一组键 - 值对.文件动态模式.动态模式

  • 为什么说MySQL单表数据不要超过500万行

    今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行.那么,你觉得这个数值多少才合适呢? 曾经在中国互联网技术圈广为流传着这么一个说法:MySQL 单表数据量大于 2000 万行,性能会明显下降.事实上,这个传闻据说最早起源于百度.具体情况大概是这样的,当年的 DBA 测试 MySQL性能时发现,当单表的量在 2000 万行量级的时候,SQL 操作的性能急剧下降,因此,结论由此而来.然后又据说百度的工程师流动到业界的其它公司,

  • MySQL数据库导入导出数据之报错解答实例讲解

    导出数据 报错 SHOW VARIABLES LIKE "secure_file_priv"; 查看默认导出目录 mysql> SELECT * FROM student INTO OUTFILE "G:\ProgramData\MySQL\MySQL Server 8.0\Uploads\student.txt"; ERROR 1290 (HY000): The MySQL server is running with the --secure-file-p

  • excel的导出和下载(实例讲解)

    1.前言 有时需要将数据库表资源导出excel,做成一些报表数据. 而php导出excel的方法大致有几种: 1. 使用php的类库,进行导出,如PHPExcel 2.使用php原生的方法进行导出 而本文介绍的就是,如何通过原生方法导出excel 2.关键函数 2.1.ob输出 •ob_start(); •ob_get_contents •ob_end_clean •fopen •fwrite •fclose •iconv 2.2.header输出 1.header 2.iconv 3.使用ob

  • JS设计模式之数据访问对象模式的实例讲解

    引言 HTML5 提供了两种在客户端存储数据的新方法:localStorage.sessionStorage,他们是Web Storage API 提供的两种存储机制,区别在于前者属于永久性存储,而后者是局限于当前窗口的数据传递,存储在其中的数据会在当前会话结束时被删除.localStorage.sessionStorage的具体内容在这里就不多做介绍了,我们主要探讨一下在实际开发中怎样合理使用他们. 问题 大部分网站会将一些数据(如:用户Token)存储在前端,用来实现页面间的传值,对于一些大

  • vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解

    vue中,我们所要实现的一个场景就是: 1.搜索页面==>到搜索结果页时,搜索结果页面要重新获取数据, 2.搜索结果页面==>点击进入详情页==>从详情页返回列表页时,要保存上次已经加载的数据和自动还原上次的浏览位置. 最近在项目中遇到这个问题,思考了几套方案,总是不太完善.百度搜到的方案也基本都只能满足一些很简单的需求.对于复杂一些的情况,还是有些不完善的地方.以下是个人对于这种场景的一个摸索,也参考了百度.如有更好的方案,欢迎指出. 缓存组件,vue2中提供了keep-alive.首

  • AJAX跨域请求数据的四种方法(实例讲解)

    由于浏览器的同源策略 ajax请求不可以接收到请求响应回来的数据 请求数据需要调用浏览器的内置构造函数 XMLHttpRequest() 进行 实例对象 var xhr = new XMLHttpRequest(); 注意点 在IE8之前支持的 ActiveXobject("Microsoft.XMLHTTP");  记住要进行兼容处理哦  在这里我就不写了 通过该对象进行获取 获取数据的四种状态  xhr.readyState 该属性保存着请求数据的几种状态 1.xhr.open(请

  • ajax数据返回进行遍历的实例讲解

    后台返回的数据: {"receiveList":[{"receive_dept_id":"1007873","receive_dept_desc":"区公司领导","guid":"2016112316042622494230","receive_platform_id":"001"},{"receive_dept_id

  • PyTorch读取Cifar数据集并显示图片的实例讲解

    首先了解一下需要的几个类所在的package from torchvision import transforms, datasets as ds from torch.utils.data import DataLoader import matplotlib.pyplot as plt import numpy as np #transform = transforms.Compose是把一系列图片操作组合起来,比如减去像素均值等. #DataLoader读入的数据类型是PIL.Image

  • python 读取.csv文件数据到数组(矩阵)的实例讲解

    利用numpy库 (缺点:有缺失值就无法读取) 读: import numpy my_matrix = numpy.loadtxt(open("1.csv","rb"),delimiter=",",skiprows=0) 写: numpy.savetxt('2.csv', my_matrix, delimiter = ',') 可能遇到的问题: SyntaxError: (unicode error) 'unicodeescape' codec

随机推荐