如何导入MongoDB的转储数据?

41

已成功导出 MongoDB 数据库:

$ mongodump -h ourhost.com:portnumber -d db_name01 -u username -p

我需要将其导入或导出到测试服务器,并且目前遇到了一些问题,请帮助我解决。

我尝试过以下几种方法:

$ mongoimport -h host.com:port -c dbname -d dbname_test -u username -p
connected to host.
Password: ...
给出以下错误信息:
assertion: 9997 auth failed: { errmsg: "auth fails", ok: 0.0 }

$ mongoimport -h host.com:port -d dbname_test -u username -p
给出以下错误:
no collection specified!

如何指定要使用的集合?我应该使用什么参数来代表集合?我想上传的数据还是我想在那里进行测试的数据?我希望导入整个数据库而不仅仅是其中的一个集合。

4个回答

72
mongorestoremongodump的补充,而mongoexportmongoimport的补充。这两组工具的主要区别在于它们所创建和理解的文件格式不同(dumprestore 读写的是BSON文件,而exportimport处理文本文件格式:JSON、CSV、TSV)。
如果您已经运行了mongodump,那么您应该会有一个名为dump的目录,其中包含每个被导出的数据库的子目录以及每个集合的文件。您可以使用以下命令来进行还原:
mongorestore -h host.com:port -d dbname_test -u username -p password dump/dbname/

假设你想将数据库dbname的内容放入一个名为dbname_test的新数据库中。


“--authenticationDatabase admin” 对我很有帮助。 - cschuff
如果备份文件是gzip格式,您可能还需要使用--archive=archive.tar.gz参数。命令如下:mongorestore --db database --drop --gzip --archive=archive.tar.gz - venimus

8

如果其他人在这些年过后(就像我一样)遇到了这个问题,并且您正在使用:

  • 使用mongodump创建的转储文件
  • 尝试从dump目录中还原
  • 并且将使用默认端口27017

那么您需要做的就是:

mongorestore dump/

请参考 mongorestore 文档 以获取更多信息。祝愉快!


7
您可能需要指定身份验证数据库。
mongoimport -h localhost:27017 --authenticationDatabase admin -u user -p -d database -c collection --type csv --headerline --file awesomedata.csv 

5
当您执行mongodump时,它将以二进制格式转储。您需要使用mongorestore来“导入”这些数据。 Mongoimport用于导入使用mongoexport导出的数据。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接