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 :)