我想在Docker容器上执行mongoimport

Cha*_*avy 7 macos mongodb docker

我用Docker开发.

docker exec -it <My-Name> mongo

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

命令是

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

我能做什么?

fly*_*rix 16

根据您的描述,您的主机中似乎有一个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
Run Code Online (Sandbox Code Playgroud)

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

如果需要调试更多,您可以登录容器并执行在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
Run Code Online (Sandbox Code Playgroud)


小智 10

无需复制文件即可运行:

docker exec -i <container-name-or-id> sh -c 'mongoimport -c <c-name> -d <db-name> --drop' < xxx.json
Run Code Online (Sandbox Code Playgroud)

  • 这不是一个好的答案,因为它没有解释。但它确实对我有用。 (3认同)

far*_*had 5

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

  • 当对某人花时间准备的答案投反对票时,也请花时间以评论的形式添加一些建设性的反馈。这有助于人们了解如何改进他们提供的答案,并允许堆栈溢出社区继续发展。 (2认同)