Las herramientas de base de datos de MongoDB incluyen una utilidad llamada mongoexport
que le permite exportar datos de MongoDB a un archivo CSV o JSON.
Este artículo le muestra cómo usar mongoexport
para exportar una colección MongoDB a un archivo CSV.
Sintaxis
La sintaxis para mongoexport
va así:
mongoexport --collection=<coll> <options> <connection-string>
Debes ejecutar mongoexport
comandos desde la línea de comandos de su sistema (por ejemplo, una nueva ventana de terminal o símbolo del sistema).
No ejecute mongoexport
comandos del mongo
cáscara.
Exportar una colección
El siguiente código de ejemplo exporta una colección de MongoDB:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --out=data/pets.csv
Esto exporta una colección llamada pets
del PetHotel
base de datos a un archivo llamado pets.csv
en los data/
carpeta.
Si la carpeta no existe, se crea. Lo mismo con el archivo. Por cierto, esto supone que no hay problemas de permisos al escribir un archivo en la ubicación especificada.
En este ejemplo, no especifiqué ningún host, puerto, autenticación, etc., por lo que exporta la colección desde la instancia de MongoDB que se ejecuta en el número de puerto de host local predeterminado 27017
.
A continuación se muestra una explicación de los parámetros que proporcionamos aquí.
Parámetro | Descripción |
---|---|
--db o -d | Especifica la base de datos que contiene la colección que queremos exportar. En este caso, la base de datos se llama PetHotel . Este parámetro se puede pasar alternativamente usando -d (en lugar de --db ). |
--collection o -c | Especifica la colección que queremos exportar. En este caso, la colección se llama pets . Este parámetro se puede pasar alternativamente como -c (en lugar de --collection ). |
--type | Especifica el tipo de archivo exportado. En este caso especificamos csv para exportarlo a un archivo CSV. |
--fields | Especifica los campos que queremos exportar. Tenemos la opción de exportar todos los campos de la colección, o solo algunos. Debe enumerar cada uno aquí, separados por una coma. Al exportar a CSV, especificar los nombres de los campos es un requisito. Puede hacerlo a través de los --fields parámetro o el --fieldFile parámetro (más sobre eso más adelante). |
--out | Especifica el nombre del archivo exportado y dónde se ubicará. Si no especifica un nombre de archivo, mongoexport escribe datos en la salida estándar (stdout ). |
Comprobar el archivo exportado
Verifiquemos que la operación de exportación funcionó como se esperaba.
Primero, revisemos la colección original.
use PetHotel
db.pets.find()
Resultado:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 } { "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 } { "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }
Entonces podemos ver que hay 7 mascotas, todas con los mismos campos que especificamos en nuestra operación de exportación.
Ahora abramos el archivo exportado pets.csv
para ver lo que hay dentro:
_id,name,type,weight 1,Wag,Dog,20 2,Bark,Dog,10 3,Meow,Cat,7 4,Scratch,Cat,8 5,Bruce,Bat,3 6,Fetch,Dog,17 7,Jake,Dog,30
Bien, entonces todos los datos están en el archivo exportado como se esperaba.
Eliminar encabezados de columna
Notará que el archivo exportado en el ejemplo anterior incluía los encabezados de las columnas.
También tiene la opción de exportar el archivo sin encabezados de columna Para hacer esto, use el --noHeaderLine
parámetro.
Ejemplo:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --noHeaderLine --out=data/pets.csv
Ahora, cuando abro el archivo exportado, no hay encabezados de columna:
1,Wag,Dog,20 2,Bark,Dog,10 3,Meow,Cat,7 4,Scratch,Cat,8 5,Bruce,Bat,3 6,Fetch,Dog,17 7,Jake,Dog,30
Usar un archivo para los nombres de campo
Puede reemplazar el --field
parámetro con el --fieldFile
parámetro para especificar el nombre de un archivo que contiene los nombres de campo que desea exportar.
mongoexport --db=PetHotel --collection=pets --type=csv --fieldFile=data/pets_fields.txt --out=data/pets.csv
El archivo que contiene los campos debe tener los campos enumerados, uno por línea.
Esto es lo que pets_fields.txt
el archivo se veía así para este ejemplo:
_id name type weight
Esto dio como resultado que el contenido del archivo exportado se viera así:
_id,name,type,weight 1,Wag,Dog,20 2,Bark,Dog,10 3,Meow,Cat,7 4,Scratch,Cat,8 5,Bruce,Bat,3 6,Fetch,Dog,17 7,Jake,Dog,30
Cambiar el orden de las columnas
Puede cambiar el orden de los campos para exportar. No es necesario que estén en el mismo orden que el documento subyacente.
Por ejemplo, este código:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,weight,type,name --out=data/pets.csv
Da como resultado el siguiente archivo CSV:
_id,weight,type,name 1,20,Dog,Wag 2,10,Dog,Bark 3,7,Cat,Meow 4,8,Cat,Scratch 5,3,Bat,Bruce 6,17,Dog,Fetch 7,30,Dog,Jake
Y lo siguiente:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=type,name,weight,_id --out=data/pets.csv
Resultados en esto:
type,name,weight,_id Dog,Wag,20,1 Dog,Bark,10,2 Cat,Meow,7,3 Cat,Scratch,8,4 Bat,Bruce,3,5 Dog,Fetch,17,6 Dog,Jake,30,7
Control de acceso/Autenticación
Si no está usando localhost, puede usar --host
parámetro para especificar el host y --port
para especificar el puerto. También puede usar el --username
parámetro para especificar el nombre de usuario y --password
para la contraseña. Si omite el parámetro de contraseña, se le solicitará. También hay una --authenticationDatabase
parámetro para especificar la base de datos de autenticación donde se ha creado el usuario.
Ejemplo:
mongoexport --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --out=data/pets.csv
Busca mongoexport
mongoexport
es parte del paquete de herramientas de base de datos de MongoDB. Las herramientas de base de datos de MongoDB son un conjunto de utilidades de línea de comandos para trabajar con MongoDB.
Si no está seguro de tener MongoDB Database Tools/mongoexport
instalado, intente ejecutar el siguiente comando en su Terminal o Símbolo del sistema para verificar:
mongoexport --version
Si lo tiene, debería ver la información de la versión, etc. Si no lo tiene, puede usar las instrucciones de instalación en el sitio web de MongoDB para instalarlo en su sistema.
¿Dónde ejecutar los comandos?
No lo olvides, debes ejecutar mongoexport
comandos desde la línea de comandos de su sistema (por ejemplo, una nueva ventana de terminal o símbolo del sistema).
No los ejecutes desde mongo
cáscara.