CSV ithal etmek için mongoimport nasıl kullanılır


190

İletişim bilgileri içeren bir CSV dosyasını içe aktarmaya çalışılıyor:

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

Bunu çalıştırdığınızda veritabanına herhangi bir belge eklenmez:

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

Trace diyor imported 1 objects, ancak Moğol kabuğunu ateşlemek ve koşmak db.things.find()yeni bir belge göstermiyor.

Neyi kaçırıyorum?


1
daha use mydbönce denedin db.things.find()mi
Kyle Wild

1
Evet - db.things'teki diğer belgeyi hala gösteriyor
Joe

bir CSV'yi iç içe belge koleksiyonuna (alt belgeler veya dizilerle) aktarmak
Raffael

Yanıtlar:


244

Örneğin MongoDB 1.6.3 ve 1.7.3 ile benim için çalıştı. Aşağıdaki örnek 1.7.3 içindi. MongoDB'nin daha eski bir sürümünü mü kullanıyorsunuz?

$ 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
Teşekkürler! Bu benim için çalışıyor. CSV'yi sizin yaptığınız gibi yaratma dışında aynı şeyi yapıyordum. Bunu denedim ve uygun şekilde çalıştı. Orijinal dosyayı MS Excel'de oluşturdum, bu yüzden her satırın sonunda newline ile ilgili bir sorun olduğunu tahmin ettim.
Joe

Benim için de çalıştı. Dosyayı OS X ile biten LF hattı ile kaydettim ve çalıştı.
Khash

Tüm kayıtları csv'den kayıt başına 1 nesne yerine sadece 1 nesneye almak mümkün müdür?
Aniket Kapse

Evet, CSV işleri yaparken Word'den uzak durun. Aynı sorunu yaşadım. Word'deki ve mongoimporttaki hatalar :(
Matt Fletcher

2
İçe aktarırken kimlik doğrulaması yapabilmek için şunları yapabilirsinizmongoimport -d db_name -c collection_name --type csv --file filename.csv --headerline --host hostname:portnumber --authenticationDatabase admin --username 'iamauser' --password 'pwd123'
blueskin

29

Mongoimport'un bana bir hata vermediği ancak 0 kayıt içe aktardığını bildireceği benzer bir sorunla şaşırdım. Özellikle "Windows Virgülle Ayrılmış (.csv)" biçimini belirtmeden, varsayılan olarak "Farklı kaydet .." "xls csv" kullanarak Mac 2011 için OSX Excel kullanarak çalışmayan dosyamı kaydetmiştim. Bu siteyi araştırıp "Windows Virgülle Ayrılmış (.csv)" biçimini kullanarak Farklı Kaydet'i denedikten sonra, mongoimport iyi çalıştı. Mongoimport'un her satırda yeni bir satır karakteri beklediğini ve varsayılan Mac Excel 2011 csv dışa aktarmanın bunu sağlamadığını düşünüyorum Her satırın sonunda karakter.


Excel, CSV dosyalarını işlerken diğer garip veritabanlarında CSV içe aktarmaya çalışmayı da içeren garip bir canavar, kesinlikle mongo ile ilgili bir sorun değil. Ben CSV'lerden etrafında oynarken Google E-tablolar kullanmayı öneririm, çok düzgün bir şekilde biçimlendirilmiş CSV ve TSV'leri çevrimiçi, ücretsiz ve ithalat / ihracat için izin verir
MacK

21

Aşağıdaki komutu yürütmemiz gerekiyor:

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

-d veritabanı adıdır

-c koleksiyon adıdır

--headerline --type csv veya --type tsv kullanılıyorsa, ilk satırı alan adları olarak kullanır. Aksi takdirde, mongoimport ilk satırı ayrı bir belge olarak içe aktarır.

Daha fazla bilgi için: mongoimport


6

üretim ortamlarında çalışıyorsanız, büyük olasılıkla kimlik doğrulaması yapmanız gerekecektir. Uygun kimlik bilgileriyle doğru veritabanında kimlik doğrulaması yapmak için böyle bir şey kullanabilirsiniz.

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

3

Dosyanın sonunda boş bir satır olup olmadığını kontrol edin, aksi takdirde mongoimport'un bazı sürümlerinde son satır göz ardı edilir


3

Bunu mongoimport kabuğunda kullanıyorum

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

tip csv / tsv / json'u seçebilir Ama sadece csv / tsv kullanabilir --headerline

Resmi doküman hakkında daha fazla bilgi edinebilirsiniz .


1

Robert Stewart, mongoimport ile nasıl ithalat yapılacağını zaten yanıtladı.

3T MongoChef Aracı ( 3.2+ sürümü) ile CSV'yi zarif bir şekilde içe aktarmanın kolay bir yolunu öneriyorum . Gelecekte birine yardım edebilir.

  1. Sadece koleksiyon seçmeniz gerekiyor
  2. İçe aktarılacak dosyayı seçin
  3. Ayrıca, içe aktarılacak verilerin seçimini kaldırabilirsiniz. Ayrıca birçok seçenek var.
  4. Koleksiyon içe aktarıldı

Videonun nasıl içe aktarılacağını görün


1

İlk önce mongokabuktan çıkmalı ve sonra mongoimportkomutu şu şekilde çalıştırmalısınız :

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 --tip csv - headerline --file '/Users/Aditya/Downloads/mstf.csv' Manoj Barik tarafından sağlanan Garantili Sonuç
user8006819

1

Robert Stewart'ın cevapları harika.

Ayrıca alanlarınızı --columHaveTypes ve --fields ile aşağıdaki gibi yazabileceğinizi eklemek isterim:

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

(Alanlarınız arasındaki virgülden sonra boşluk bırakmamaya dikkat edin)

Diğer türler için buradaki dokümana bakın: https://docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption-mongoimport-columnshavetypes


1

3.4 sürümü için lütfen aşağıdaki sözdizimini kullanın:

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

3 gün sonra nihayet kendi başıma yaptım. Beni destekleyen tüm kullanıcılara teşekkürler.


yazım hatası var, --headerline,
Ankit Kumar

1

CSV dosyasını içe aktarmaya çalışırken bir hata alıyordum. Ne yaptım. Önce başlık satırının sütun adlarını Büyük harfle değiştirdim ve "-" işaretini kaldırdım ve gerekirse "_" ekledim. Sonra CSV'yi mongoya aktarmak için aşağıdaki komutu yazın

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

resim açıklamasını buraya girin


Charm gibi çalıştı! Yukarıda belirtilen cevap bence eski MongoDB sürümleri içindi.
Raghav Sharma

0

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


0

Mongoimport'u çalıştırdıktan sonra bunu kullanmanız yeterlidir

İçe aktarılan nesne sayısını döndürür

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

nesne sayısını döndürür.


0

kullanın:

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

0

mongoimport -d testi -c testi - tür csv --file SampleCSVFile_119kb.csv - başlık

toplama verilerini kontrol et: -

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

Garip olarak hiç kimse --uribayraktan bahsetmedi :

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

0

Gelecekteki okuyucular için paylaşım:

Bizim durumumuzda, hostçalışmasını sağlamak için parametreyi eklememiz gerekiyordu

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

Benim gereksinim .csv (with no headline)uzak MongoDBörneğe almak oldu. İçin mongoimport v3.0.7komut benim için çalıştı aşağıda:

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

Örneğin:

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

Aşağıda içe aktarmadan sonra nasıl göründüğünün ekran görüntüsü:

resim açıklamasını buraya girin

burada nameve dosyadaki emailsütunlardır .csv.


0

Verilen .csvile yalnızca bir sütun Ben dosyayı hiçbir Başlık komut benim için çalıştı aşağıda:

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

burada alan adı , .csvdosyadaki sütunun Başlık adını belirtir .


0

.Csv dosyasını / usr / local / bin dizinine veya mondodb'unuzun bulunduğu klasöre kopyaladığınızdan emin olun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.