web-dev-qa-db-fra.com

Je veux exécuter mongoimport sur un Docker Container

J'utilise Docker pour développer.

docker exec -it <My-Name> mongo

Je souhaite importer les données vers MongoDB à partir d'un fichier JSON, mais cela échoue.

La commande est

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

Que puis-je faire?

11
Chars Davy

Avec votre description, il semble que vous ayez un fichier de données au format json dans votre machine hôte et que vous souhaitiez importer ces données dans mongodb qui s'exécute dans un conteneur.

Pour ce faire, vous pouvez suivre les étapes suivantes.

#>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

Dans la dernière étape, vous devez utiliser le chemin d'accès au fichier disponible dans le conteneur.

Pour déboguer davantage si nécessaire, vous pouvez vous connecter au conteneur et exécuter comme vous le faites sur les machines 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
19
fly2matrix

Exécuter sans copier le fichier:

docker exec -i <container-name-or-id> sh -c 'mongoimport -c <c-name> -d <db-name> --drop' < xxx.json
1
kpwhois
  • Étape 1: accédez au répertoire où se trouve le fichier JSON de votre terminal hôte.
  • Étape 2: utilisez la commande "docker cp xxx.json mongo: /tmp/xxx.json" pour copier le fichier JSON du répertoire hôte actuel vers le répertoire conteneur "tmp".
  • Étape 3: accédez à la commande de conteneur Shell à l'aide de la commande "docker container exec -it mongo bash".
  • Étape 4: importez la collection du dossier "tmp" dans la base de données de conteneurs à l'aide de la commande: "mongoimport --uri =" <mongodb connection uri> "—Collection = <c-name> --file /tmp/xxx.json "
0
farhad