如何将数据导入到MongoDB

12
我正在尝试导入一个大的JSON格式数据文件。我正在使用以下命令进行操作: mongoimport --db verbs --collection de --file "/Users/marcelbraasch/Downloads/de.json" 这个命令正在执行,但是我遇到了以下异常:

Failed:(未授权)在verbs上未被授权执行命令{insert:"de",ordered:false,writeConcern:{w:"majority"},$db:"verbs"}。

我已经尝试了像这样的组合: mongoimport -h localhost:27017 -u 'user' -p 'password' --db verbs --collection de --file "/Users/myname/Downloads/de.json" 但它们都没有起作用。如果有关信息很重要的话,我的mongo实例正在docker容器中运行。我需要做什么?

这些用户名和密码组合是否正确?他们在verbs数据库上有正确的权限吗?您能否使用这些凭据运行db.auth()并进行交叉检查? - karthikdivi
同时也希望您不要将密码放在单引号中。 - karthikdivi
如果您的密码包含特殊字符,则必须在Linux Bash shell中正确转义它们。这是一个权限错误,可能是因为您的用户在该数据库和集合上没有适当的权限,或者是因为您的身份验证失败。 - BigDataKid
我的第二个命令有效吗?是的,我相当确定他们是正确的。没有特殊字符。它在单引号中。那有关系吗? - Marcel Braasch
2
我现在正在使用 mongoimport --host="localhost" --port="27017" --username="user" --password="password" --db="verbs" --collection="de" --file="/Users/myname/Downloads/de.json"。然而这会报错:error connecting to host: could not connect to server: connection() : auth error: sasl conversation error: unable to authenticate using mechanism "SCRAM-SHA-1": (AuthenticationFailed) Authentication failed.。但是用相同的凭据,我可以使用 mongo -u ... -p ... 登录。 - Marcel Braasch
2个回答

29

这里找到了答案。缺失的关键词是authenticationDatabase。对我有效的命令如下:

mongoimport --db verbs --collection de --authenticationDatabase admin --username user --password password --drop --file /Users/myname/Downloads/de.json


1

我曾经也遇到过同样的问题,添加关键字--authenticationDatabase对我有用。


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