我想在Docker容器上执行mongoimport

时间:2018-04-18 09:00:54

标签: mongodb macos docker

我使用Docker进行开发。

docker exec -it <My-Name> mongo

我想从JSON文件将数据导入MongoDB,但它失败了。

命令是

mongoimport -d <db-name> -c <c-name> --file xxx.json

我该怎么办?

3 个答案:

答案 0 :(得分:9)

看来你的描述 您在主机中有一个json格式的数据文件,并且您想将此数据导入到容器中运行的mongodb中。

您可以按照以下步骤进行操作。

#>docker exec -it <container-name> mongo
#>docker cp xxx.json <container-name-or-id>:/tmp/xxx.json
#>docker exec <container-name-or-id> mongoimport -d <db-name> -c <c-name> --file /tmp/xxx.json

在最后一步中,您必须使用容器中可用的文件路径。

如果需要调试更多,您可以登录容器并按照Linux机器上的方式执行。

#>docker exec -it <container-name-or-id> sh
sh $>cat /tmp/xxx.json
sh $>mongoimport -d <db-name> -c <c-name> --file /tmp/xxx.json

答案 1 :(得分:6)

无需复制文件即可运行:

docker exec -i <container-name-or-id> sh -c 'mongoimport -c <c-name> -d <db-name> --drop' < xxx.json

答案 2 :(得分:0)

  • 第1步:从您的主机终端导航到JSON文件所在的目录。
  • 第2步:使用命令“ docker cp xxx.json mongo:/tmp/xxx.json”将JSON文件从当前主机目录复制到容器“ tmp”目录。
  • 第3步:使用命令“ docker container exec -it mongo bash”导航到容器命令外壳。
  • 第4步:使用以下命令将集合从“ tmp”文件夹导入到容器数据库:“ mongoimport --uri =” <mongodb connection uri>“ -collection = <c-name> --file / tmp / xxx.json“