成功转储 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!
如何指定使用哪个集合? -d 应该使用什么?我想上传什么或我想用什么作为测试? 我想导入完整的数据库,而不仅仅是它的集合。
与
mongodump
对应的是 mongorestore
(与 mongoimport
对应的是 mongoexport
)——主要区别在于工具创建和理解的文件格式(dump
和 restore
)读写 BSON 文件 export
和 import
处理文本文件格式:JSON、CSV、TSV。
如果您已经运行了
mongodump
,您应该有一个名为 dump
的目录,其中包含每个转储数据库的子目录,以及每个集合在这些目录中的一个文件。然后您可以使用如下命令恢复它:
mongorestore -h host.com:port -d dbname_test -u username -p password dump/dbname/
假设您要将数据库
dbname
的内容放入名为dbname_test
的新数据库中。
对于其他人来说,这些年后可能会遇到这个问题(就像我一样),如果你正在使用
dump
目录恢复27017
你所要做的就是,
mongorestore dump/
请参阅 mongorestore 文档 了解更多信息。干杯!
您可能需要指定身份验证数据库
mongoimport -h localhost:27017 --authenticationDatabase admin -u user -p -d database -c collection --type csv --headerline --file awesomedata.csv
当您执行
mongodump
时,它将以二进制格式转储。 您需要使用 mongorestore
来“导入”此数据。
Mongoimport
用于导入使用 mongoexport
导出的数据
对于希望将不同数据库或 MongoDB 集群的转储恢复到新数据库或 MongoDB 集群的任何人,您可以在包含转储文件夹的目录中执行以下操作,假设它具有默认的“转储”:
mongorestore --uri "<cluster-connection-string>" /dump
如果您使用 MongoDB Atlas,您可以在其 UI 中找到您的连接字符串。