场景
将远程服务器A上的MongoDB数据库test下的集合people导入到服务器B数据库test的集合people_test下。
简单方案
先将A服务器数据导出,然后再执行导入到B服务器。
下面的导入和导出操作,均是在git bash下执行,如果是在windows命令行下需要稍微更改路径。
工具
利用本地原生MongoDB安装目录下的bin目录中的mongoexport和mongoimport
导出数据
这里,我打算将远程服务器A上的数据导入到我本地windows系统e盘temp目录下;
首先,进入到MongoDB的安装目录,然后:
cd bin
mongoexport -u admin -p 123456 --authenticationDatabase admin -h 10.5.10.22:27017 -d test -c people -o /e/temp/people.json
参数 | 说明 |
---|---|
-u | 用户名 |
-p | 密码 |
--authenticationDatabase | 保存用户凭据的数据库(一般是admin) |
-h | host:port |
-d | 数据库名 |
-c | 表名(只能接受一个表名参数,不能接受由空格、逗号等 分隔的多个表名,也不能用"*") |
-o | 导出的文件名 |
--file | 导入的文件名 |
--upsert | 导入的记录创建或更新 |
更多详细的操作:mongoexport --help。
导入数据
这里我打算将本地windows系统e盘temp目录下的people.json文件导入到服务器B上;
也是在bin目录下;
mongoimport -u admin -p 123456 --authenticationDatabase admin -h 10.6.22.12:27017 -d test -c people_test --file /e/temp/people.json --upsert rm /e/temp/people.json
总结
执行 | |
---|---|
导出 | mongoexport -u 用户名 -p 密码 --authenticationDatabase 用户凭据数据库 -h ip:port -d 数据库名 -c 表名 -o 导出的文件名.json |
导入后删除文件 | mongoimport -u 用户名 -p 密码 --authenticationDatabase 用户凭据数据库 -h ip:port -d 数据库名 -c 表名 --file 导出的文件名.json --upsert && rm 导出的文件名.json |
能够利用windows本地安装的MongoDB bin目录下的程序导入和导出远程服务器上的数据;
如果是导出本地MongoDB的数据,就不需要用户名和密码以及保存用户凭据的数据库。
MongoDB官方文档: