Cara menggunakan mongoimport untuk mengimpor csv


190

Mencoba mengimpor CSV dengan informasi kontak:

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

Menjalankan ini sepertinya tidak menambahkan dokumen apa pun ke database:

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

Kata Trace imported 1 objects, tetapi menembakkan peluru Mongo dan berlaridb.things.find() tidak menunjukkan dokumen baru.

Apa yang saya lewatkan?


1
Apakah kamu pernah mencoba use mydbsebelumnya db.things.find()?
Kyle Wild

1
Ya - masih menunjukkan dokumen lain yang ada di db.things
Joe

untuk mengimpor CSV ke dalam kumpulan dokumen bersarang (dengan sub-dokumen atau array), Anda dapat menggunakan AWK - joyofdata.de/blog/import-csv-into-mongodb-with-awk-json
Raffael

Jawaban:


244

Contoh Anda berhasil untuk saya dengan MongoDB 1.6.3 dan 1.7.3. Contoh di bawah ini untuk 1.7.3. Apakah Anda menggunakan versi MongoDB yang lebih lama?

$ 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 }

7
Terima kasih! Ini bekerja untuk saya. Saya melakukan hal yang sama sebelumnya dengan pengecualian membuat CSV seperti yang Anda lakukan. Sudah mencobanya dan itu berhasil. Saya membuat file asli di MS Excel, jadi menebak ada masalah dengan baris baru di akhir setiap baris.
Joe

Bekerja untuk saya juga. Saya menyimpan file dengan garis LF yang berakhir pada OS X dan berhasil.
Khash

Apakah mungkin untuk mengimpor semua catatan dari csv ke hanya 1 objek, bukan 1 objek per catatan?
Aniket Kapse

Ya, menjauhlah dari Word saat melakukan hal-hal CSV. Saya memiliki masalah yang sama. Bug di Word dan di mongoimport juga :(
Matt Fletcher

2
Untuk dapat mengautentikasi saat mengimpor, Anda dapat melakukannyamongoimport -d db_name -c collection_name --type csv --file filename.csv --headerline --host hostname:portnumber --authenticationDatabase admin --username 'iamauser' --password 'pwd123'
blueskin

29

Saya bingung dengan masalah yang sama di mana mongoimport tidak memberi saya kesalahan tetapi akan melaporkan mengimpor 0 catatan. Saya telah menyimpan file saya yang tidak berfungsi menggunakan versi OSX Excel untuk Mac 2011 menggunakan default "Save as .." "xls as csv" tanpa menentukan secara spesifik format "Windows Comma Separated (.csv)". Setelah meneliti situs ini dan mencoba format "Save As again menggunakan" Windows Comma Separated (.csv) ", mongoimport bekerja dengan baik. Saya pikir mongoimport mengharapkan karakter baris baru di setiap baris dan ekspor standar csv Mac Excel 2011 tidak menyediakan karakter di akhir setiap baris.


Excel memang binatang yang aneh ketika memproses file CSV, yang juga termasuk mencoba mengimpor CSV di database lain, itu tidak sepenuhnya masalah yang terkait dengan mongo. Saya akan menyarankan untuk menggunakan Google Sheets ketika bermain-main dengan CSV, gratis, online dan memungkinkan untuk mengimpor / mengekspor CSV dan TSV yang diformat dengan benar juga
MacK

21

Kita perlu menjalankan perintah berikut:

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

-d adalah nama basis data

-c adalah nama koleksi

--headerline Jika menggunakan --type csv atau --type tsv, gunakan baris pertama sebagai nama bidang. Jika tidak, mongoimport akan mengimpor baris pertama sebagai dokumen yang berbeda.

Untuk informasi lebih lanjut: mongoimport


6

Anda kemungkinan besar perlu mengautentikasi jika Anda bekerja di lingkungan jenis produksi. Anda dapat menggunakan sesuatu seperti ini untuk mengautentikasi terhadap database yang benar dengan kredensial yang sesuai.

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

3

Pastikan Anda memiliki baris kosong di akhir file, jika tidak, baris terakhir akan diabaikan pada beberapa versi mongoimport


3

Saya menggunakan ini pada shell mongoimport

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

tipe dapat memilih csv / tsv / json Tetapi hanya csv / tsv yang dapat digunakan --headerline

Anda dapat membaca lebih lanjut di dokumen resmi .


1

Robert Stewart telah menjawab untuk cara mengimpor dengan mongoimport.

Saya menyarankan cara mudah untuk mengimpor CSV secara elegan dengan 3T MongoChef Tool (versi 3.2+). Mungkin bisa membantu seseorang di masa depan.

  1. Anda hanya perlu memilih koleksi
  2. Pilih file yang akan diimpor
  3. Anda juga dapat membatalkan pilihan data yang akan diimpor. Juga ada banyak pilihan.
  4. Koleksi yang diimpor

Lihat cara mengimpor video


1

Pertama, Anda harus keluar dari mongoshell dan kemudian jalankan mongoimportperintah seperti ini:

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$

$ mongoimport -d marketdata -c minibar --type csv --headerline --file '/Users/Aditya/Downloads/mstf.csv' Dijamin Hasil Dialami oleh Manoj Barik
user8006819

1

Jawaban Robert Stewart luar biasa.

Saya ingin menambahkan bahwa Anda juga dapat mengetik bidang Anda dengan --columHaveTypes dan --fields seperti ini:

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

(Hati-hati untuk tidak memiliki ruang setelah koma antara bidang Anda)

Untuk jenis lain, lihat dokumen di sini: https://docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption-mongoimport-columnshavetypes


1

Untuk versi 3.4, silakan gunakan sintaks berikut:

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

Setelah 3 hari, saya akhirnya membuatnya sendiri. Terima kasih untuk semua pengguna yang mendukung saya.


ada kesalahan ketik, - headerline,
Ankit Kumar

1

Ketika saya mencoba mengimpor file CSV, saya mendapatkan kesalahan. Apa yang telah aku lakukan. Pertama saya mengubah nama kolom baris header dalam huruf kapital dan menghapus "-" dan menambahkan "_" jika perlu. Kemudian, perintah Typed below untuk mengimpor CSV ke dalam mongo

$ mongoimport --db=database_name --collection=collection_name --type=csv --file=file_name.csv --headerline  

masukkan deskripsi gambar di sini


Bekerja seperti Mantra! Jawaban yang disebutkan di atas adalah untuk versi MongoDB yang lebih lama.
Raghav Sharma

0

C: \ wamp \ mongodb \ bin> mongoexport --db proj_mmm --pengumpulan koleksi --csv --fieldFile offerings_fields.txt --out offerings.csv


0

Cukup gunakan ini setelah menjalankan mongoimport

Ini akan mengembalikan jumlah objek yang diimpor

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

akan mengembalikan jumlah objek.


0

gunakan:

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

0

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

periksa data pengumpulan: -

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
}


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

0

Anehnya tidak ada yang disebutkan --uribendera:

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

0

Berbagi untuk pembaca masa depan:

Dalam kasus kami, kami perlu menambahkan hostparameter untuk membuatnya berfungsi

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

0

Persyaratan saya adalah mengimpor instance .csv (with no headline)ke remote MongoDB. Untuk mongoimport v3.0.7perintah di bawah ini bekerja untuk saya:

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

Sebagai contoh:

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

Di bawah ini adalah screenshot tampilannya setelah impor:

masukkan deskripsi gambar di sini

di mana namedan emailadalah kolom dalam .csvfile.


0

Diberikan .csvfile yang saya miliki yang hanya memiliki satu kolom tanpa Header , perintah di bawah ini berfungsi untuk saya:

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

di mana nama-bidang mengacu pada nama Header dari kolom dalam .csvfile.


0

Pastikan untuk menyalin file .csv ke / usr / local / bin atau folder apa pun yang digunakan mondodb Anda

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.