mongodb - tutorial - ¿Cómo usar mongoimport con mi base de datos de aplicaciones de meteoritos?
meteor tutorial español (5)
Ahora uso mongochef para mover datos entre bases de datos. Es muy fácil: solo se conecta a cada base de datos (generalmente, db local y remota), luego puede copiar y pegar documentos en todas las colecciones. Mucho más fácil que el enfoque de línea de comandos.
Puedo usar mongoimport
para importar datos CSV a una base de datos mongodb que no sea meteorito, pero no puedo averiguar cómo importar un CSV a mi base de datos de aplicaciones de meteoros.
Aprendí cómo ejecutar el shell mongo para mi aplicación de meteor mongo
( meteor mongo
) pero no puedo ejecutar mongoimport
desde el shell.
La mongodb docs para mongoimport
dice
En este ejemplo, mongoimport importa los datos con formato csv en /opt/backups/contacts.csv a los contactos de la colección en la base de datos de usuarios en la instancia de MongoDB que se ejecuta en el puerto localhost numerado 27017.
mongoimport --db usuarios - contactos de recolección --tipo csv --file /opt/backups/contacts.csv
Pero cuando ejecuto mongod
, inicio mi aplicación meteorológica y ejecuto mongoimport
se importa a mi base de datos de test
, no a mi base de datos de aplicación.
Leí este comentario de stackoverflow post:
Use mongoexport para volcar sus colecciones individualmente, luego mongoimport para importar los archivos en el db denominado meteor en la instancia de meteor mongodb. La instancia de meteor mongo se ejecuta en el puerto 3002 con bind_address 127.0.0.1, y los archivos de datos se encuentran en el subdirectorio del proyecto meteorito .meteor / local / db
Pero no entiendo cómo conectarme a esa instancia o cómo mongoimport
con el comando mongoimport
.
NOTA: El método anterior NO funcionó en el puerto 3002 para mí, pero funcionó en el puerto 3001.
Para importar un archivo TSV externo en una base de datos de meteoritos, inicié la aplicación de meteoros que necesitaba los datos de TSV. Esto también lanza el servicio meteor mongodb (en mi caso en host: localhost: 3001), luego abrí una terminal en OSX y, a través de la terminal, navegé a una carpeta bin del paquete mongodb, que descargué anteriormente para obtener el binario, "Mongoimport". Una vez en la carpeta bin del paquete mongodb, a continuación, en el símbolo del sistema, escribí lo siguiente a continuación (algunas opciones de cambio variarán ... pero --host, --localhost y --db switch / valores deben ser como se muestran):
$ ./mongoimport --host localhost:3001 --db meteor --collection datarefs --type tsv --drop --headerline --file /PathToFile/DataRefs.tsv
Después de pulsar enter, mongoimport echo''d importación exitosa en el terminal. Una vez hecho esto, pude navegar a la aplicación de meteoros a través de la terminal y lanzar meteor mongo: $ meteor mongo ... y ver la colección importada, "datarefs" en la base de datos de meteoros para esta aplicación.
$ meteor mongo
...
...
meteor:PRIMARY> show collections
datarefs
system.indexes
meteor:PRIMARY>
Parece que acabo de responder a tu comentario en la maravillosa respuesta de Rahuls . De todos modos, descargue mongodb de mongodb.org para su sistema operativo (o un administrador de paquetes como macports) y use la herramienta provista en la carpeta bin. mongoimport
no es un comando en el shell mongo, es un ejecutable que se ejecuta por separado.
Además, no olvide colocar el puerto (normalmente 3001 si está ejecutando su instancia de meteorito en 3000 ), también la base de datos suele ser meteorito y no usuarios cuando lo ejecuta
mongoimport -h localhost:3001 --db meteor --collection contacts --type csv --file /opt/backups/contacts.csv
Primero crea una colección en una aplicación de meteoros como esta.
Students = new Meteor.Collection("students");
A continuación, agregue un valor ficticio para asegurarse de que la colección inicializada por meteoros
Students.insert({"name":"first"});
En algún evento de clic, por ejemplo. Para comprobar usar esto
meteor:PRIMARY> show collections students system.indexes
Luego importa. mongoimport -h localhost:3001 -d meteor -c students < students.json
De alguna manera, meteor no reconoce las nuevas colecciones importadas que necesita, ya sea que las elimine, agregue algún valor ficticio, vuelva a importarlas o cree una nueva e inicialícela con valor ficticio y luego importe. Puede haber un error de enlace porque las colecciones se muestran directamente en minimongo.
Gracias a Akshat y Tom Kyler
Un pequeño script (plantilla) para ejecutar mongoimport a xxx.meteor.com
#!/bin/sh # Script to import csvfile to meteor application deployed to free meteor.com hosting. # Make sure your versions of mongo match with the metor.com mongo versions. # As Jan 2016 it seems to be 3.x something. Tested with mongoimport 3.12. if [ $# -eq 0 ] then echo "usage: $0 xxx.meteor.com collection filename.csv" exit 1 fi URL=$1 COLLECTION=$2 FILE=$3 echo Connecting to $URL, please stand by.... collection=$COLLECTION file=$FILE PUPMS=`meteor mongo --url $URL | sed ''s/mongodb:///// -u /'' | sed ''s/:/ -p /'' | sed ''s/@/ -h /'' | sed ''s//// -d /''` mongoimport -v $PUPMS --type csv --headerline --collection $COLLECTION --file $FILE