0. 前言
某次项目需要从MongoDB导入导出数据,但发现可视化工具robot 3.x并没有提供数据的导入导出功能,只好上敲命令,期间遇到了点坑,以此记录下来。
1. 数据的导出
1.1 准备操作
打开windows命令窗口(或登录服务器用Unix命令行),转到mongo的bin文件夹下(如果直接配置好环境变量,可直接敲命令)使用mongodump命令(别急着按回车)
1.2 mongodump基本语法
1 | > mongodump -h dbhost -d dbname -o dbdirectory |
-h:
MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d:
需要备份的数据库实例,例如:test
-o:
备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。
如果直接输入mongodump命令,客户端会连接到ip为 127.0.0.1 端口号为 27017 的MongoDB服务上,并备份所有数据到 bin/dump/ 目录中。
1.3 注意点
由于数据库往往带有账户密码,所以直接还要加上用户与密码参数。
Mongo的参考文档中有:
-u [ –username ] arg username
-p [ –password ] arg password
下面举个例子
mongodump -d mydb -u root -p -o d:\mydb
即使账号密码无误,这样子仍极有可能无法导出,提示中含有Authentication Fail (认证失败)
原因在于:仍缺少了一个重要的参数,没有指定身份权限认证的数据库。
方法:补上 –authenticationDataBase admin即可。
比如:
成功的话可以看到目标目录有以数据库名字为名的文件夹以及bson和json文件
2. 数据的导入
2.1 准备操作
- 既然是导入,那就得有导入的数据文件,其实就是导出的bson和json文件
- 安装好的mongo客户端(进入路径{mongoDB}/bin/或配置好环境变量)
- mongorestore命令
2.2 mongorestor基本语法
1 | > mongorestore -h <hostname><:port> -d dbname <path> |
–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 注意点
同导出操作1.3的注意点。如果设置了账号则要需要指明账号密码参数,并使用–authenticationDataBase admin
不需要指明导入到哪里,会自动导入到mongo的数据库中,如果数据(库)已存在则会覆盖
该命令恢复的数据是以数据库为单位的,即:恢复(导入)一整个数据库的数据
Copyright © 2018, CSCW back-end Kanarien, All Rights Reserved