mongoDB数据的导出导入

本小妞迷上赌 提交于 2019-11-30 01:55:37

在工作中,我一般使用Robomongo-1.0去连接mongodb的,据我所知,但是这些工具一般都没有导入导出的功能。所以想要导点数据比较麻烦,后来查了一下mongodb自带了两个工具用来完成这些功能。

1、mongoexport用来导出

mongoexport可以把collection导出成json或csv文件,默认是导出json格式。
语法:mongoexport -d db -c collection -o file --type json/csv -f field
参数说明:
-d :数据库名
-c :collection名
-o :输出的文件名
–type : 输出的格式(可以省略)
-f :输出的字段,如果-type为csv,则需要加上-f “字段名”
示例:

./mongoexport -d test_001 -c operation_log -o /usr/back/log.json

2、mongoimport用来数据导入

语法:mongoimport -d db -c collection --file filename --headerline --type json/csv -f field
参数说明:
-d :数据库名
-c :collection名
–type :导入的格式,默认json(可以省略)
-f :导入的字段名
–headerline :如果导入的格式是csv,则可以使用第一行的标题作为导入的字段
–file :要导入的文件
示例:

./mongoimport -d test_001 -c operation_log --file /usr/back/log.json

这里标记一个问题,就是当前用户没有权限的时候,使用mongoexport导出会出现异常:
Failed: not authorized on databasename to execute command { count: “operation_log”, query: {} }

后来查找了一下,发现可以使用mongodump导出整个库,导出的数据格式是BSON,可读性稍微差一些,可以解决上述问题,而且可以实现远程导出
语法:mongodump -h host -u user -p pwd -d db -o file –authenticationDatabase admin
参数说明:
-h :操作的设备host
-u:超级用户名
-p:超级用户密码
-d:数据库名
-c:collection名
-o:输出的文件名
示例:

./mongodump -h 127.0.0.1 -u user -p pwd  -d test_001 -o /usr/back/log.json --authenticationDatabase admin

超级用户的role有两种,userAdmin或者userAdminAnyDatabase(比前一种多加了对所有数据库的访问)。
db是指定数据库的名字,admin是管理数据库

mongodump对应的恢复工具是mongorestore
语法:mongorestore -h host -u user -p pwd -d db -o file
参数说明:
-h :操作的设备host
-u:超级用户名
-p:超级用户密码
-d:数据库名
-c:collection名
-o:要恢复的文件名
示例:

./mongorestore -h 127.0.0.1 --port 27017 -u user -p pwd -d test /data/backup/test/  --authenticationDatabase admin

上面所说的语法是大家平时用的比较多的,还有另外一些语法,具体可以查看mongodb的官网

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!