Domanda

Il tentativo di importare un file CSV con le informazioni di contatto:

Name,Address,City,State,ZIP  
Jane Doe,123 Main St,Whereverville,CA,90210  
John Doe,555 Broadway Ave,New York,NY,10010 

L'esecuzione di questo non sembra aggiungere tutti i documenti al database:

$ mongoimport -d mydb -c things --type csv --file locations.csv --headerline

Trace dice imported 1 objects, ma sparando il guscio Mongo e funzionante db.things.find() non mostra alcun nuovi documenti.

Che cosa mi manca?

È stato utile?

Soluzione

Il vostro esempio ha lavorato per me con MongoDB 1.6.3 e 1.7.3. Nell'esempio riportato di seguito è stato per 1.7.3. Si sta utilizzando una versione precedente di MongoDB?

$ cat > locations.csv
Name,Address,City,State,ZIP
Jane Doe,123 Main St,Whereverville,CA,90210
John Doe,555 Broadway Ave,New York,NY,10010
 ctrl-d
$ mongoimport -d mydb -c things --type csv --file locations.csv --headerline
connected to: 127.0.0.1
imported 3 objects
$ mongo
MongoDB shell version: 1.7.3
connecting to: test
> use mydb
switched to db mydb
> db.things.find()
{ "_id" : ObjectId("4d32a36ed63d057130c08fca"), "Name" : "Jane Doe", "Address" : "123 Main St", "City" : "Whereverville", "State" : "CA", "ZIP" : 90210 }
{ "_id" : ObjectId("4d32a36ed63d057130c08fcb"), "Name" : "John Doe", "Address" : "555 Broadway Ave", "City" : "New York", "State" : "NY", "ZIP" : 10010 }

Altri suggerimenti

Ero perplesso con un problema simile in cui mongoimport non mi ha dato un errore, ma sarebbe segnalare l'importazione di 0 record. Avevo salvato il mio file che non ha funzionato con OSX Excel per Mac versione 2011 con il default "Salva con nome .." "xls csv come" senza specificare "Windows separati da virgola (.csv)" formato specifico. Dopo la ricerca di questo sito e di provare il "Salva con nome nuovo usando 'Windows separati da virgola (.csv)' formato, mongoimport funzionava bene. Credo che mongoimport aspetta un carattere di nuova riga su ogni linea e il valore di default di Mac Excel 2011 csv esportazione non impone carattere alla fine di ogni riga.

Abbiamo bisogno di eseguire il seguente comando:

mongoimport --host=127.0.0.1 -d database_name -c collection_name --type csv --file csv_location --headerline

-d è il nome del database

-c è il nome di raccolta

- headerline Se si utilizza --type CSV o TSV --type, utilizza la prima riga come nomi di campo. In caso contrario, mongoimport importerà la prima linea come un documento distinto.

Per ulteriori informazioni: mongoimport

è molto probabile necessità di autenticazione se si sta lavorando nella produzione tipo di ambienti. Si può usare qualcosa di simile per l'autenticazione del database corretto con le credenziali appropriate.

mongoimport -d db_name -c collection_name --type csv --file filename.csv --headerline --host hostname:portnumber --authenticationDatabase admin --username 'iamauser' --password 'pwd123'

Controllare di avere una riga vuota alla fine del file, altrimenti l'ultima riga verrà ignorata su alcune versioni di mongoimport

Io lo uso sul guscio mongoimport

mongoimport --db db_name --collection collection_name --type csv --file C:\\Your_file_path\target_file.csv --headerline

tipo può scegliere csv / TSV / JSON Ma solo csv / TSV può usare --headerline

Si può leggere di più sul ufficiale doc .

Robert Stewart ha già risposto per come importare con mongoimport.

sto suggerendo modo semplice per l'importazione CSV elegantemente con 3T MongoChef Tool (3.2+ versione). Potrebbe aiutare qualcuno in futuro.

  1. Hai solo bisogno di selezionare la raccolta
  2. Seleziona il file da importare
  3. È possibile anche i dati deselezionare che sta per importare. Inoltre molte opzioni ci sono.
  4. Collezione importata

come importare video

In primo luogo si dovrebbe venire fuori dal guscio mongo e quindi eseguire il comando mongoimport in questo modo:

Manojs-MacBook-Air:bin Aditya$ mongoimport -d marketdata -c minibars 
--type csv 
--headerline
--file '/Users/Aditya/Downloads/mstf.csv'

2017-05-13T20:00:41.989+0800    connected to: localhost
2017-05-13T20:00:44.123+0800    imported 97609 documents
Manojs-MacBook-Air:bin Aditya$

Le risposte di Robert Stewart è grande.

Vorrei aggiungere che è anche possibile digitare i campi con --columHaveTypes e --fields in questo modo:

mongoimport -d myDb -c myCollection --type csv --file myCsv.csv 
  --columnsHaveTypes --fields "label.string(),code.string(),aBoolean.boolean()"

(attenzione a non avere alcun spazio dopo la virgola tra i campi)

Per gli altri tipi, vedi doc qui: https: //docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption-mongoimport-columnshavetypes

Per la versione 3.4, si prega di utilizzare la seguente sintassi:

mongoimport -u "username" -p "password" -d "test" -c "collections" --type csv --file myCsv.csv --headerline

Dopo 3 giorni, ho finalmente fatto per conto mio. Grazie a tutti gli utenti che mi hanno sostenuto.

C: \ wamp \ MongoDB \ bin> mongoexport --db proj_mmm --collection offerte --csv --fieldFile offerings_fields.txt --out offerings.csv

Basta usare questo dopo aver eseguito mongoimport

Sarà certo numero di oggetti importati tornare

use db
db.collectionname.find().count()

restituirà il numero di oggetti.

utilizzo:

mongoimport -d 'database_name' -c 'collection_name' --type csv --headerline --file filepath/file_name.csv

mongoimport -d test test -c --type csv --file SampleCSVFile_119kb.csv --headerline

Dati di raccolta di controllo: -

var collections = db.getCollectionNames();

for(var i = 0; i< collections.length; i++)
{    
   print('Collection: ' + collections[i]);
   // print the name of each collection
   
   db.getCollection(collections[i]).find().forEach(printjson);
   
   //and then print the json of each of its elements
}

1]We can save xsl as .csv file
2] Got to MongoDB bin pathon cmd - > cd D:\Arkay\soft\MongoDB\bin
3] Run below command
> mongoimport.exe -d dbname -c collectionname --type csv --file "D:\Arkay\test.csv" --headerline
4] Verify on Mongo side using below coomand.
>db.collectioname.find().pretty().limit(1)

Stranamente nessuno bandiera --uri menzionata:

mongoimport --uri connectionString -c questions --type csv --file questions.csv --headerline 

La condivisione per i lettori futuri:

Nel nostro caso, abbiamo bisogno di aggiungere il parametro host per farlo funzionare

mongoimport -h mongodb://someMongoDBhostUrl:somePORTrunningMongoDB/someDB -d someDB -c someCollection -u someUserName -p somePassword --file someCSVFile.csv --type csv --headerline --host=127.0.0.1

La mia esigenza era quella di importare il .csv (with no headline) per esempio MongoDB remota. Per il comando mongoimport v3.0.7below funzionato per me:

mongoimport -h <host>:<port> -u <db-user> -p <db-password>  -d <database-name> -c <collection-name> --file <csv file location> --fields <name of the columns(comma seperated) in csv> --type csv

Ad esempio:

mongoimport -h 1234.mlab.com:61486 -u arpitaggarwal -p password  -d my-database -c employees --file employees.csv --fields name,email --type csv

Di seguito lo screenshot di come sembra dopo l'importazione:

entrare descrizione dell'immagine qui

dove name e email sono le colonne nel file .csv.

file .csv Dato che ho, che ha una sola colonna con senza intestazione , sotto il comando ha funzionato per me:

mongoimport -h <mongodb-host>:<mongodb-port> -u <username> -p <password> -d <mongodb-database-name> -c <collection-name> --file file.csv --fields <field-name> --type csv

dove -nome si riferisce al nome di intestazione della colonna nel file di .csv.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top