目录
第一部分 备份数据1.1 语法1.2 参数1.3 实例第二部分 规复数据2.1 语法2.2 参数2.3 实例第三部分 导出数据3.1 语法3.2 实例一[json格式]3.3 实例二[CVS格式]3.4 实例三[添加query]第四部分 导入数据4.1 语法4.2 参数4.3 实例一[CVS格式]4.4 实例二[JSON格式]
第一部分 备份数据
在Mongodb中我们利用mongodump命令来备份MongoDB数据。该命令可以导出所有数据到指定目录中。

mongodump命令可以通过参数指定导出的数据量级转存的做事器。
1.1 语法
mongodump命令脚本语法如下:
$ mongodump -h dbhost -d dbname -o dbdirectory
1.2 参数
1. -h:MongDB所在做事器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:270172. -d:须要备份的数据库实例,例如:test3. -o:备份的数据存放位置,例如:c:\data\dump,当然该目录须要提前建立,在备份完成后, 系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。
1.3 实例
#只导出test数据库到桌面$ sudo mongodump -h 127.0.0.1 -d test -o /Users/51testing/Desktop/2017-03-30T08:51:41.812+0800 writing test.numbers to2017-03-30T08:51:41.812+0800 writing test.test2 to2017-03-30T08:51:41.818+0800 writing test.users to2017-03-30T08:51:41.819+0800 writing test.test1 to2017-03-30T08:51:41.852+0800 done dumping test.test1 (3 documents)2017-03-30T08:51:41.852+0800 done dumping test.users (4 documents)2017-03-30T08:51:41.853+0800 done dumping test.test2 (100 documents)2017-03-30T08:51:42.748+0800 done dumping test.numbers (200000 documents)
第二部分 规复数据
2.1 语法
$ mongorestore -h <hostname><:port> -d dbname <path>
2.2 参数
--host <:port>, -h <:port>:MongoDB所在做事器地址,默认为: localhost:27017--db , -d :须要规复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2--drop:规复的时候,先删除当前数据,然后规复备份的数据。便是说,规复后, 备份后添加修正的数据都会被删除,慎用哦!
<path>:mongorestore 末了的一个参数,设置备份数据所在位置,例如:c:\data\dump\test。你不能同时指定 <path> 和 --dir 选项,--dir也可以设置备份目录。--dir:指定备份的目录,你不能同时指定 <path> 和 --dir 选项。
2.3 实例
$ mongorestore -d test1 --dir /Users/51testing/Desktop/test
注:
由于默认的是localhost:27071,没有改端口号
规复之前
> show dbsadmin 0.000GBlocal 0.000GBshoppingdb 0.001GBtest 0.006GB
规复之后
> show dbsadmin 0.000GBlocal 0.000GBshoppingdb 0.001GBtest 0.006GB#datasize不一致test1 0.002GB
为何datasize不一致?
由于mongo是增量数据库, 初始化时默认分配空间,之后再根据需求增加,由于之前操作过大量数据,以是会涌现这样的结果.
第三部分 导出数据
MongoDB中的mongoexport工具可以把一个库中的collection导出成JSON格式
或CSV格式
的文件。可以通过指定的内置参数导出数据项,当然导出的时候可以排序和指定条件。
查看mongo信息,安装位置/启动方法等
$ brew info mongo
mac 采取brew安装,位置/usr/local/Cellar/mongodb
, 版本可能不同,依据查看的信息即可找到.
$ cd /usr/local/Cellar/mongodb/3.4.0/bin$ lsbsondump mongodump mongoimport mongorestore mongotopmongo mongoexport mongooplog mongosmongod mongofiles mongoperf mongostat
比如我们查看mongoexport
的利用方法
#即可$ ./mongoexport --help....
3.1 语法
mongoexport -h dbhost -d dbname -c collectionName -o output
-h arg 主机--port arg 端口-u arg 用户名-p arg 密码-d arg 数据库-c arg 凑集-f arg 字段名 逗号隔开-q arg 查询条件 json格式--csv 导出csv格式-o arg 导出的文件名
3.2 实例一[json格式]
导出test数据库中的users凑集,格式默认为json
$ mongoexport -d test -c users -o /Users/51testing/Desktop/users2017-03-30T10:24:03.147+0800 connected to: localhost2017-03-30T10:24:03.147+0800 exported 4 records
把稳事变
can not use --fields when input type is JSON
3.3 实例二[csv格式]
如果我们须要导出CSV格式
的数据,则须要利用–csv参数
,详细如下所示:
CSV定义
CSV (逗号分隔值文件格式): 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,由于分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。常日,所有记录都有完备相同的字段序列。
导出test数据库中的users凑集中的\公众name,age\"大众
字段, 中间不可有空格
$ mongoexport -d test -c users --type=csv -f \公众name,age\公众 -o /Users/51testing/Desktop/user_csv12017-03-30T10:40:19.909+0800 connected to: localhost2017-03-30T10:40:19.909+0800 exported 4 records
脑洞----怎么全部导出所有字段????
答案: 诚笃点, 一个个写吧.
3.4 实例三[添加query]
导出test数据库中的users凑集中的\公众name,age\公众
字段, 中间不可有空格, 并且只筛选age
大于20
的数据
$ mongoexport -d test -c users --type=csv -f \公众name,age\公众 -q '{age:{$gt: 20}}' -o /Users/51testing/Desktop/user_csv22017-03-30T11:06:53.023+0800 connected to: localhost2017-03-30T11:06:53.047+0800 exported 1 record
结果如下,知足以上的需求
name,agelisi,29
第四部分 导入数据
4.1 语法
Import CSV, TSV or JSON data into MongoDB
mongoimport <options> <file>
4.2 参数
-d 数据库名-c collection名--type 导入的格式,默认json-f 导入的字段名--headerline 如果导入的格式是csv,则可以利用第一行的标题作为导入的字段--file 要导入的文件
4.3 实例一[导入CSV]
将桌面上备份的数据(csv)[name,age]导入
进--数据库improtdb
中的凑集importCol
.
默认的导入格式为json
$ mongoimport -d improtdb -c importCol --fields name,age --file /Users/51testing/Desktop/user_csv1 --type csv2017-03-30T13:08:26.524+0800 connected to: localhost2017-03-30T13:08:26.606+0800 imported 4 documents
终端中cmd + T
开启新的标签, 进一步可以验证
> show dbs> db.表名.find()
4.4 实例二[导入json]
导入json数据时不须要设置fields
字段,
$ mongoimport -d importJDB -c users --file /Users/51testing/Desktop/users2017-03-30T13:44:44.166+0800 connected to: localhost2017-03-30T13:44:44.295+0800 imported 4 documents
更多精彩内容欢迎关注“IT实战同盟”哦~~~