繁体   English   中英

mongodb一次导入多个集合

[英]mongodb import multiple collections at once

我正在使用这个命令

mongoimport --db 数据库名

导入我使用 mongoexport 导出的数据库。 该数据库在 mongoimport 文档中有 100 多个集合,您需要指定集合名称和 json 文件。 如何一次导入所有集合而不必为每个集合键入命令

如果转储文件在 .json 中,您可以使用脚本进行导入

ls *.json | sed 's/.metadata.json//' | while read col; do mongoimport -d db_name -c $col < $col.metadata.json; done

如果转储文件在 .json.gz 中,您可以使用脚本进行导入

ls *.gz | sed 's/.metadata.json.gz//' | while read col; do mongoimport -d db_name --gzip -c $col < $col.metadata.json.gz; done

根据文档

2.6 新版功能:如果您不指定 --collection,mongoimport 将从输入文件名中获取集合名称。 如果输入文件有扩展名,MongoDB 会从集合名称中省略文件的扩展名。

所以它似乎应该一次导入一个集合。 因此,除非您编写一个 shell 脚本来执行此操作,否则我看不到任何方法。

mongodump 和 mongorestore 更适合进行完整的数据库转储并立即恢复它,正如同一文档的其他部分所说

警告

避免使用 mongoimport 和 mongoexport 进行完整实例生产备份。 它们不能可靠地保留所有丰富的 BSON 数据类型,因为 JSON 只能表示 BSON 支持的类型的一个子集。 使用 mongodump 和 mongorestore 如 MongoDB 备份方法中所述来实现此类功能。

很难找到有关导入多个集合的文档,这非常令人惊讶。 当您搜索数据库时,恢复数据库并不总是一个直观的关键字,但当您想从备份恢复数据库时,这就是您想要做的。 如果您已经有使用mongodump导出的集合转储,则应该能够使用mongorestore

这就是你真正需要运行的:

mongorestore --db db_name ./db_dumpfiles/

一个简单的命令

mongorestore --db folder_name ./folder_name/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM