unmarshaling underfoot query failed example error data changing bytes mongodb mongoimport

mongodb - underfoot - Importar más de 1 archivo json usando mongoimport



mongoimport json string (10)

Esto me funcionó en MAC OS X

find . -regex ''.*/[^/]*.json'' | xargs -L 1 mongoimport --db DB_NAME -u USER_NAME -p PASSWORD --collection COLLECTION_NAME --file

Soy nuevo en mongodb y quiero saber cómo importar un archivo json de un servidor a otro. mongoimport -d test -c bik check.json el siguiente comando mongoimport -d test -c bik check.json y funciona bien para mí. Ahora quiero saber cuándo hay varios archivos json , ¿cómo puedo importarlos todos a la vez? No he podido encontrar ningún documento relacionado donde esté escrito esto no es posible. Por favor ayudame es esto posible y como


Linux:

> cat one.json two.json > three.json > mongoimport --db foo --collection baz --file three.json"

O bien, todos los archivos en la carpeta:

> cat *.json > big.json > mongoimport --db foo --collection baz --file "big.json"


Otra solución de una línea (asumiendo que está en la carpeta donde están los archivos json):

ls | sed ''s/.json$//'' | xargs -I{} mongoimport -d DATABASE_NAME -c {} {}.json


Para windows bat file. Esto sería mucho mejor si tiene una lista de archivos json en la carpeta. y el nombre de la colección coincide con el nombre en los archivos

@echo off for %%f in (*.json) do ( "mongoimport.exe" --db databasename --collection %%~nf --drop --file %%f ) pause


Puedes hacerlo de esta manera también:

for filename in *; do mongoimport --db <Database> --collection <Collection Name> --file $filename; done


Se me ocurrió una forma más elegante de importar automáticamente TODAS las colecciones:

ls -1 *.json | sed ''s/.json$//'' | while read col; do mongoimport -d db_name -c $col < $col.json; done

Espero que esto sea útil.


Siempre puedes escribir algunos scripts de shell.

colls=( mycoll1 mycoll2 mycoll5 ) for c in ${colls[@]} do mongoimport -d mydb -c $c.json done


Utilicé las soluciones aquí para agregar una función de shell a mi perfil de bash para hacer esto rápidamente.

Mi ejemplo depende de la exportación de .metadata.json cada colección como un archivo con el nombre de la colección y la extensión .metadata.json .

function mimport() { for filename in *; do collection="${filename%.metadata.json}"; mongoimport --db $1 --collection $collection --file $filename; done }

Use en la ruta de los archivos de exportación, pasando el nombre de la base de datos al comando ...

mimport my_db

Cargará todas las colecciones en la base de datos en localhost.


Versión de Windows por lotes:

@echo off for %%f in (*.json) do ( "mongoimport.exe" --jsonArray --db databasename --collection collectioname --file %%~nf.json )


Voy a mostrar cómo importar muchas colecciones de manera eficiente utilizando solo el terminal de Linux (también funciona en Mac).

Debe tener todos los archivos json en la misma carpeta y el nombre del archivo debe ser la colección que se importará a su base de datos.

Entonces, comencemos, abra la carpeta que contiene sus archivos json. Reemplace <DATABASE> por el nombre de su base de datos, luego ejecute la siguiente línea:

for collection in $(ls | cut -d''.'' -f1); do mongoimport --db <DATABASE> --collection ${collection} --file ${collection}.json; done

Pero, ¿qué está pasando allí?

En primer lugar, hay que tener en cuenta que los paréntesis se ejecutarán primero. En este caso, crea una lista de todos los archivos que obtienen solo el nombre de cada archivo (eliminando su extensión).

En segundo lugar, toda la lista se agregará a un bucle "para" en una variable local llamada colección (el nombre de esta variable puede ser lo que quieras)

En tercer lugar, el "do" ejecuta la línea de importación (*)

Finalmente el "hecho", termina el bucle.

(*) La línea de importación está compuesta por "mongoimport" que requiere el nombre de la base de datos "--db", el nombre de la colección "--collection" y el nombre del archivo "--file". Estos requisitos se han cumplido con la variable "$ collection" creada en "para"

Espero haber ayudado a alguien! Buena suerte chicos :)