MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Nhập tệp CSV vào MongoDB với mongoimport

Khi sử dụng MongoDB, bạn có thể sử dụng mongoimport để nhập tài liệu vào một bộ sưu tập. mongoimport là một tiện ích dòng lệnh nhập nội dung từ tệp JSON mở rộng, CSV hoặc TSV. Tệp nhập có thể đã được tạo bởi mongoexport hoặc một số tiện ích xuất khẩu khác.

Bài viết này trình bày các ví dụ về cách nhập tệp CSV vào MongoDB.

Ví dụ

Giả sử chúng ta có tệp CSV sau được gọi là pets.csv :

_id,name,type
1,"Wag","Dog"
2,"Bark","Dog"
3,"Meow","Cat"

Lệnh sau nhập tệp CSV vào MongoDB:

mongoimport --db=PetHotel --type=csv --headerline --file=pets.csv

Trong trường hợp này, tôi không chỉ định một bộ sưu tập để nhập nó vào, vì vậy nó đã tạo một bộ sưu tập có cùng tên của tệp (pets ).

Kiểm tra kết quả

Hãy xem bộ sưu tập.

db.pets.find()

Kết quả:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

Chúng tôi có thể thấy rằng các tài liệu đã được nhập như mong đợi.

Tệp CSV không có tiêu đề cột

Trong ví dụ trước, chúng tôi đã sử dụng --headerline để chỉ định rằng dòng đầu tiên sẽ được sử dụng cho các tên trường.

Nếu tệp CSV của bạn không chứa dòng tiêu đề, bạn sẽ cần sử dụng --fields tham số hoặc --fieldFile tham số để chỉ định tên trường.

Vì vậy, hãy tưởng tượng tệp CSV của chúng tôi không có dòng cột và thay vào đó trông như thế này:

1,"Wag","Dog"
2,"Bark","Dog"
3,"Meow","Cat"

Sau đó, chúng tôi có thể sử dụng lệnh sau để nhập tệp:

mongoimport --db=PetHotel --type=csv --fields=_id,name,type --file=pets.csv

Điều đó có cùng kết quả với ví dụ trước.

Chỉ định Tên Bộ sưu tập

Bạn có thể sử dụng --collection (hoặc -c ) tham số để chỉ định một tập hợp để nhập tệp vào.

Dưới đây là một ví dụ về việc sử dụng --collection để nhập cùng một tệp vào một bộ sưu tập khác:

mongoimport --db=PetHotel --collection=pets2 --type=csv --fields=_id,name,type --file=pets.csv

Nếu bộ sưu tập chưa tồn tại, nó sẽ được tạo. Nếu nó đã tồn tại, thì kết quả nhập sẽ phụ thuộc vào chế độ bạn đang sử dụng (sẽ nói thêm về điều này sau).

Trong trường hợp của chúng tôi, đây là giao diện của bộ sưu tập mới được tạo:

db.pets2.find()

Kết quả:

{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }
{ "_id" : 1, "name" : "Wag", "type" : "Dog" }

Bỏ bộ sưu tập trước khi nhập

Bạn có thể sử dụng --drop để loại bỏ bất kỳ bộ sưu tập hiện có nào có cùng tên với bộ sưu tập bạn đang cố gắng tạo / nhập.

Hãy tưởng tượng chúng ta có một tệp thứ hai, được gọi là pets2.csv , với tài liệu sau:

_id,name,type,weight
4,"Bubbles","Fish",3

Đây là điều sẽ xảy ra nếu tôi nhập tài liệu đó vào pets2 bộ sưu tập sử dụng --drop tùy chọn:

mongoimport --db=PetHotel --collection=pets2 --type=csv --headerline --drop --file=pets2.csv

Đầu ra:

2021-01-03T15:05:40.281+1000	connected to: mongodb://localhost/
2021-01-03T15:05:40.284+1000	dropping: PetHotel.pets2
2021-01-03T15:05:40.336+1000	1 document(s) imported successfully. 0 document(s) failed to import.

Điều này cho chúng tôi biết rằng bộ sưu tập đã bị xóa và một tài liệu đã được nhập.

Hãy xem bộ sưu tập:

db.pets2.find()

Kết quả:

{ "_id" : 4, "name" : "Bubbles", "type" : "Fish", "weight" : 3 }

Đúng như mong đợi, tài liệu mới của chúng tôi là tài liệu duy nhất trong bộ sưu tập.

Chế độ nhập

Có nhiều chế độ nhập khác nhau mà bạn có thể sử dụng với mongoimport . Các chế độ này xác định điều gì sẽ xảy ra nếu đã có tài liệu khớp trong bộ sưu tập mà bạn đang cố gắng nhập vào.

Các chế độ như sau:

Chế độ Mô tả
insert Đây là chế độ mặc định. Chế độ này sẽ chèn các tài liệu từ tệp nhập. Nếu một tài liệu phù hợp đã tồn tại trong bộ sưu tập, thì sẽ xảy ra lỗi. Tài liệu phù hợp là tài liệu có cùng một ID duy nhất (chẳng hạn như _id phù hợp trường) dưới dạng tài liệu trong tệp nhập.
upsert Thay thế các tài liệu hiện có trong cơ sở dữ liệu bằng các tài liệu phù hợp từ tệp nhập. Tất cả các tài liệu khác đã được chèn.
merge Hợp nhất tài liệu hiện có khớp với tài liệu trong tệp nhập với tài liệu mới. Tất cả các tài liệu khác đã được chèn.
delete Xóa tài liệu hiện có trong cơ sở dữ liệu khớp với tài liệu trong tệp nhập. Mọi tài liệu không khớp đều không có hiệu lực.

Xem Chế độ nhập của mongoimport để biết ví dụ về từng chế độ.

Kiểm tra mongoimport

mongoimport là một phần của gói Công cụ cơ sở dữ liệu MongoDB. Công cụ cơ sở dữ liệu MongoDB là một bộ tiện ích dòng lệnh để làm việc với MongoDB.

Nếu bạn không chắc mình có Công cụ cơ sở dữ liệu MongoDB / mongoimport hay không đã cài đặt, hãy thử chạy lệnh sau trong Terminal hoặc Command Prompt của bạn để kiểm tra:

mongoimport --version

Nếu có, bạn sẽ thấy thông tin phiên bản, v.v. Nếu chưa có, bạn có thể sử dụng hướng dẫn cài đặt trên trang web MongoDB để cài đặt vào hệ thống của mình.

Chạy ở đâu mongoimport Lệnh?

Bạn cần chạy mongoimport lệnh từ dòng lệnh của hệ thống của bạn (ví dụ:cửa sổ Terminal hoặc Command Prompt mới).

Đừng chạy chúng từ mongo vỏ bọc.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Không thể ghi đè mô hình sau khi đã biên dịch Mongoose

  2. Kiểm tra sự tồn tại của Bộ sưu tập trong MongoDB

  3. Làm cách nào để cập nhật các trường tài liệu trong mongo db bằng trình điều khiển java?

  4. Bộ lọc mảng Mongodb 3.6.0-rc3 không hoạt động?

  5. MongoDB $ reverseArray