【发布时间】:2017-06-14 08:15:59
【问题描述】:
我正在使用这个命令
mongoimport --db 数据库名称
导入我使用 mongoexport 导出的数据库。 该数据库在 mongoimport 文档中有超过 100 个集合,您需要指定集合名称和 json 文件。 如何一次导入所有集合,而不必为每个集合键入命令
【问题讨论】:
标签: mongodb mongoimport mongoexport
我正在使用这个命令
mongoimport --db 数据库名称
导入我使用 mongoexport 导出的数据库。 该数据库在 mongoimport 文档中有超过 100 个集合,您需要指定集合名称和 json 文件。 如何一次导入所有集合,而不必为每个集合键入命令
【问题讨论】:
标签: mongodb mongoimport mongoexport
根据文档
2.6 版新功能:如果不指定 --collection,mongoimport 从输入文件名中获取集合名称。 MongoDB 省略了 集合名称中文件的扩展名,如果输入文件有 一个扩展。
所以似乎应该一次导入一个集合。因此,除非您编写一个 shell 脚本来执行此操作,否则我没有办法。
mongodump 和 mongorestore 对于获取完整的数据库转储并立即恢复它要好得多,正如同一文档的其他部分所说的那样
警告
避免使用 mongoimport 和 mongoexport 进行完整的实例生产 备份。它们不能可靠地保留所有丰富的 BSON 数据类型, 因为 JSON 只能表示支持的类型的子集 布森。使用 mongodump 和 mongorestore,如 MongoDB 备份中所述 此类功能的方法。
【讨论】:
如果转储文件在 .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
【讨论】:
令人惊讶的是,很难找到有关导入多个集合的文档。 恢复数据库在搜索时并不总是直观的关键字,但当您想从备份中恢复数据库时,这就是您想要做的。如果您已经有使用mongodump 导出的集合转储,您应该可以使用mongorestore。
这就是你真正需要运行的全部内容:
mongorestore --db db_name ./db_dumpfiles/
【讨论】:
一个简单的命令
mongorestore --db folder_name ./folder_name/
【讨论】: