mongodb 导入导出

简介

mongodb提供了mongoexport/mongoimport以支持将数据表进行导入导出。
导入导出命令一般用于特殊的数据处理用途,由于不包含索引处理,且json格式无法支持所有bson类型,因此不适合用于重要数据的备份恢复。

参考文档

https://docs.mongodb.com/manual/reference/program/mongoimport/
https://docs.mongodb.com/manual/reference/program/mongoexport/

mongoexport用法

说明
mongoexport 支持将mongodb数据表导出为json或csv格式,可在导出时指定一定的查询条件实现过滤。
命令的执行要求当前用户对数据库有read权限;
在mongos或副本集上执行时,默认采用primary readperference选项,即优先从主库上读取。

示例用法

./mongoexport --host 127.0.0.1 --port 27017 -d appdb -c T_TEST_DATA -u appuser -p appuser@2016 -o export/T_TEST_DATA.json

参数说明

参数名 参数值
host[h] 主机
port 端口
db[d] 目标数据库
username[u] 用户名
password[p] 密码
authenticationDatabase 鉴权数据库,不指定则使用database参数
collection[c] 目标Collection
query[q] 查询过滤条件,不指定则导出全表
out[o] 目标输出文件
type 格式类型,默认json
skip skip条件
limit limit条件
sort sort条件

其他用法

//按分页导出
mongoexport -d test -c records --sort '{a: 1}' --limit 100 --skip 100 --out export.1.json

//按查询条件导出
mongoexport -d test -c records -q '{ a: { $gte: 3 } }' --out exportdir/myRecords.json

mongoimport用法

说明
mongoimport 支持将json或csv格式的数据文件导入到mongodb数据库,该命令与mongoexport结合使用。

命令的执行要求当前用户对数据库有readWrite权限;
导入命令要求在mongos或副本集主节点上执行。

示例用法

./bin/mongoimport --host 127.0.0.1 --port 27017 -d appdb -c T_TEST_DATA_1 -u appuser -p appuser@2016 --numInsertionWorkers 50 --file export/T_TEST_DATA.json

参数说明

参数名 参数值
host[h] 主机
port 端口
db[d] 目标数据库
username[u] 用户名
password[p] 密码
authenticationDatabase 鉴权数据库,不指定则使用database参数
collection[c] 目标Collection,不指定则采用文件名称
drop 指定该选项,则导入前删除表
file 目标导入文件
type 格式类型,默认json
mode 导入模式,有insert、upsert、merge,默认insert
numInsertionWorkers 并发数

导入模式
upsert模式,会将已有数据替换;
merge模式,会将已有数据进行合并;

执行效率
使用insert的性能最高,建议使用;
在多核的环境中,通过numInsertionWorkers可指定并发运行,可提升一定效率。

参考数据

使用mongoexport 导出860W的数据记录,文件大小2.9G,共耗时10分钟

使用mongoimport 导入860W的数据记录,使用--mode=insert模式,用时3分钟15秒(numInsertionWorkers=50)
使用mongoimport 导入860W的数据记录,使用--mode=insert模式,用时5分钟(numInsertionWorkers=1)
使用mongoimport 导入860W的数据记录,使用--mode=upsert模式,用时45分钟(numInsertionWorkers=1)

使用mongodump 导出为40s,而mongorestore为4分钟。

posted @ 2018-05-27 10:15  美码师  阅读(14561)  评论(0编辑  收藏  举报