Cách sử dụng mongoimport để nhập csv


189

Đang cố gắng nhập CSV với thông tin liên hệ:

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

Chạy này dường như không thêm bất kỳ tài liệu nào vào cơ sở dữ liệu:

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

Trace nói imported 1 objects, nhưng bắn vỏ Mongo và chạy db.things.find()không hiển thị bất kỳ tài liệu mới nào.

Tôi đang thiếu gì?


1
bạn đã thử use mydbchưa db.things.find()?
Kyle Wild

1
Có - vẫn hiển thị tài liệu khác có trong db.things
Joe

để nhập CSV vào bộ sưu tập các tài liệu lồng nhau (có tài liệu phụ hoặc mảng), bạn có thể sử dụng AWK - joyofdata.de/blog/import-csv-into-mongodb-with-awk-json
Raffael

Câu trả lời:


243

Ví dụ của bạn đã làm việc với tôi với MongoDB 1.6.3 và 1.7.3. Ví dụ dưới đây là cho 1.7.3. Bạn có đang sử dụng phiên bản cũ hơn của MongoDB không?

$ 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
Cảm ơn! Điều này làm việc cho tôi. Tôi đã làm điều tương tự trước đây ngoại trừ việc tạo CSV theo cách bạn đã làm. Đã thử nó và nó làm việc thích hợp. Tôi đã tạo tệp gốc trong MS Excel, vì vậy đoán có vấn đề với dòng mới ở cuối mỗi dòng.
Joe

Làm việc cho tôi quá. Tôi đã lưu tệp với dòng kết thúc trên OS X và nó đã hoạt động.
Khash

Có thể nhập tất cả các bản ghi từ csv vào chỉ 1 đối tượng thay vì 1 đối tượng trên mỗi bản ghi?
Aniket Kapse

Có, tránh xa Word khi làm công cụ CSV. Tôi gặp vấn đề tương tự. Lỗi trong Word và trong mongoimport cũng vậy :(
Matt Fletcher

2
Để có thể xác thực trong khi nhập, bạn có thể thực hiệnmongoimport -d db_name -c collection_name --type csv --file filename.csv --headerline --host hostname:portnumber --authenticationDatabase admin --username 'iamauser' --password 'pwd123'
blueskin

29

Tôi đã bối rối với một vấn đề tương tự trong đó mongoimport không gây ra lỗi cho tôi nhưng sẽ báo cáo việc nhập 0 bản ghi. Tôi đã lưu tệp không hoạt động bằng phiên bản OSX Excel cho Mac 2011 bằng cách sử dụng mặc định "Lưu dưới dạng .." "xls dưới dạng csv" mà không chỉ định cụ thể định dạng "Windows Comma Tách biệt (.csv)". Sau khi nghiên cứu trang web này và thử định dạng "Lưu lại lần nữa bằng cách sử dụng" Windows Comma Tách (.csv), mongoimport hoạt động tốt. Tôi nghĩ mongoimport mong đợi một ký tự dòng mới trên mỗi dòng và xuất khẩu csv mặc định của Mac Excel 2011 không cung cấp điều đó ký tự ở cuối mỗi dòng.


Excel thực sự là một con quái vật kỳ lạ khi xử lý các tệp CSV, bao gồm cả việc cố gắng nhập CSV trên các cơ sở dữ liệu khác, đây không hoàn toàn là một vấn đề liên quan đến mongo. Tôi sẽ đề xuất sử dụng Google Sheets khi chơi xung quanh với CSV, nó miễn phí, trực tuyến và cho phép nhập / xuất các CSV và
TSV

21

Chúng ta cần thực hiện lệnh sau:

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

-d là tên cơ sở dữ liệu

-c là tên bộ sưu tập

--headerline Nếu sử dụng --type csv hoặc --type tsv, hãy sử dụng dòng đầu tiên làm tên trường. Nếu không, mongoimport sẽ nhập dòng đầu tiên dưới dạng tài liệu riêng biệt.

Để biết thêm thông tin: mongoimport


6

rất có thể bạn sẽ cần xác thực nếu bạn đang làm việc trong môi trường sản xuất. Bạn có thể sử dụng một cái gì đó như thế này để xác thực dựa trên cơ sở dữ liệu chính xác với thông tin xác thực phù hợp.

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

3

Kiểm tra xem bạn có một dòng trống ở cuối tệp không, nếu không thì dòng cuối cùng sẽ bị bỏ qua trên một số phiên bản của mongoimport


3

Tôi sử dụng cái này trên vỏ mongoimport

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

loại có thể chọn csv / tsv / json Nhưng chỉ csv / tsv mới có thể sử dụng --headerline

Bạn có thể đọc thêm về tài liệu chính thức .


1

Robert Stewart đã trả lời về cách nhập khẩu với mongoimport.

Tôi đang đề xuất cách dễ dàng để nhập CSV một cách thanh lịch với Công cụ MongoChef 3T (phiên bản 3.2+). Có thể giúp đỡ ai đó trong tương lai.

  1. Bạn chỉ cần chọn bộ sưu tập
  2. Chọn tệp để nhập
  3. Bạn cũng có thể bỏ chọn dữ liệu sẽ nhập. Ngoài ra có nhiều lựa chọn ở đó.
  4. Bộ sưu tập nhập khẩu

Xem cách nhập video


1

Trước tiên, bạn nên ra khỏi mongoshell và sau đó thực hiện mongoimportlệnh như thế này:

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/Doads/mstf.csv' Kết quả Gurantaed của Manoj Barik
user8006819

1

Câu trả lời của Robert Stewart rất hay.

Tôi muốn thêm rằng bạn cũng có thể nhập các trường của mình bằng --columHaveTypes và --fields như thế này:

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

(Cẩn thận để không có bất kỳ khoảng trống nào sau dấu phẩy giữa các trường của bạn)

Đối với các loại khác, xem tài liệu ở đây: https://docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption-mongoimport-columnshavetypes


1

Đối với phiên bản 3.4, vui lòng sử dụng cú pháp sau:

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

Sau 3 ngày, cuối cùng tôi cũng tự làm được. Cảm ơn tất cả những người dùng đã ủng hộ tôi.


có lỗi đánh máy, --headerline,
Ankit Kumar

1

Khi tôi đang cố gắng nhập tệp CSV, tôi đã gặp lỗi. Những gì tôi đã làm xong. Đầu tiên tôi thay đổi tên cột của dòng tiêu đề trong chữ in hoa và xóa "-" và thêm "_" nếu cần. Sau đó, nhập lệnh bên dưới để nhập CSV vào mongo

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

nhập mô tả hình ảnh ở đây


Làm việc như Bùa chú! Câu trả lời được đề cập ở trên là dành cho các phiên bản MongoDB cũ hơn tôi nghĩ.
Raghav Sharma

0

C: \ wamp \ mongodb \ bin> mongoexport --db proj_mmm - dịch vụ kết hợp --csv --fieldFile Offer_fields.txt --out Offer.csv


0

Chỉ cần sử dụng điều này sau khi thực hiện mongoimport

Nó sẽ trả về số lượng đối tượng được nhập

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

sẽ trả về số lượng đối tượng.


0

sử dụng :

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

kiểm tra dữ liệu thu thập: -

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

Kỳ lạ thay, không ai nhắc đến --uricờ:

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

0

Chia sẻ cho độc giả tương lai:

Trong trường hợp của chúng tôi, chúng tôi cần thêm hosttham số để làm cho nó hoạt động

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

Yêu cầu của tôi là nhập phiên bản .csv (with no headline)từ xa MongoDB. Đối với mongoimport v3.0.7lệnh dưới đây làm việc cho tôi:

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

Ví dụ:

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

Dưới đây là ảnh chụp màn hình trông như thế nào sau khi nhập:

nhập mô tả hình ảnh ở đây

trong đó nameemaillà các cột trong .csvtập tin.


0

Với .csvtập tin tôi có mà chỉ có một cột với không có tiêu đề , dưới lệnh làm việc cho tôi:

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

trong đó tên trường đề cập đến tên Tiêu đề của cột trong .csvtệp.


0

Đảm bảo sao chép tệp .csv vào / usr / local / bin hoặc bất kỳ thư mục nào mà mondodb của bạn nằm trong

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.