Sử dụng mongoimport tiện ích để nhập dữ liệu vào cơ sở dữ liệu MongoDB.
MongoDB cung cấp mongoimport
tiện ích có thể được sử dụng để nhập tệp JSON, CSV hoặc TSV vào cơ sở dữ liệu MongoDB.
mongoimport
nằm trong thư mục bin (ví dụ:
/ mongodb / bin
hoặc bất cứ nơi nào bạn đã cài đặt nó).
Để nhập dữ liệu, hãy mở cửa sổ Terminal / Command Prompt mới và nhập mongoimport
theo sau là các tham số như tên cơ sở dữ liệu, tên bộ sưu tập, tên tệp nguồn, v.v.
Nếu bạn thấy rằng bạn không thể chạy mongoimport , hãy chắc chắn rằng bạn đã thoát khỏi mongo hoặc mở một cửa sổ Terminal / Command Prompt mới trước khi chạy mongoexport , vì nó là một tiện ích riêng biệt.
Nhập tệp JSON
Đây là một ví dụ về việc chạy mongoimport
để nhập tệp JSON.
Bạn có thể nhớ rằng trước đây chúng tôi đã sử dụng mongoexport để xuất nghệ sĩ bộ sưu tập vào một tệp JSON.
Sau đó, chúng tôi đã loại bỏ nghệ sĩ bộ sưu tập hoàn toàn.
Bây giờ, chúng tôi sẽ nhập lại bộ sưu tập đó vào cơ sở dữ liệu của mình.
mongoimport --db music --file /data/dump/music/artists.json
Thông báo kết quả:
2016-07-12T13:34:04.904+0700 no collection specified 2016-07-12T13:34:04.905+0700 using filename 'artists' as collection 2016-07-12T13:34:04.911+0700 connected to: localhost 2016-07-12T13:34:04.968+0700 imported 13 documents
Nếu bạn không chỉ định tên bộ sưu tập, bộ sưu tập sẽ được tạo dựa trên tên của tệp (trừ phần mở rộng).
Bây giờ, hãy quay lại mongo của chúng tôi Cửa sổ Terminal / Command Prompt và truy xuất danh sách các bộ sưu tập trong cơ sở dữ liệu của chúng tôi:
show collections
Kết quả:
artists musicians producers
Bây giờ, chúng tôi sẽ truy vấn bộ sưu tập đã phục hồi của chúng tôi.
db.artists.find()
Kết quả:
{ "_id" : 1, "artistname" : "AC/DC" } { "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" } { "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" } { "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" } { "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" } { "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" } { "_id" : ObjectId("5781f85d48ef8c6b3ffb0150"), "artistname" : "Deep Purple", "albums" : [ { "album" : "Machine Head", "year" : 1972, "genre" : "Rock" }, { "album" : "Stormbringer", "year" : 1974, "genre" : "Rock" } ] } { "_id" : ObjectId("578214f048ef8c6b3ffb0159"), "artistname" : "Miles Davis", "albums" : [ { "album" : "Kind of Blue", "year" : 1959, "genre" : "Jazz" }, { "album" : "Bitches Brew", "year" : 1970, "genre" : "Jazz" } ] } { "_id" : ObjectId("578217c248ef8c6b3ffb015a"), "artistname" : "Robben Ford", "albums" : [ { "album" : "Bringing it Back Home", "year" : 2013, "genre" : "Blues" }, { "album" : "Talk to Your Daughter", "year" : 1988, "genre" : "Blues" } ] } { "_id" : 2, "artistname" : "Prince", "address" : { "street" : "Audubon Road", "city" : "Chanhassen", "state" : "Minnesota", "country" : "United States" } } { "_id" : 4, "artistname" : "Rush" } { "_id" : 3, "artistname" : "Moby", "albums" : [ { "album" : "Play", "year" : 1999, "genre" : "Electronica" }, { "album" : "Long Ambients 1: Calm. Sleep.", "year" : 2016, "genre" : "Ambient" } ] } { "_id" : ObjectId("578217c248ef8c6b3ffb015b"), "artistname" : "Snoop Dogg", "albums" : [ { "album" : "Tha Doggfather", "year" : 1996, "genre" : "Rap" }, { "album" : "Reincarnated", "year" : 2013, "genre" : "Reggae" } ] }
Chỉ định Tên Bộ sưu tập
Bạn có thể sử dụng --collection
để cung cấp tên của tập hợp mà dữ liệu sẽ đi vào.
Hãy nhập một tệp khác, nhưng lần này, chỉ định tên bộ sưu tập:
mongoimport --db music --collection jazz --file /data/dump/music/miles_davis.json
Thông báo kết quả:
2016-07-12T14:09:01.793+0700 connected to: localhost 2016-07-12T14:09:01.849+0700 imported 1 document
Bây giờ chuyển về mongo và kiểm tra danh sách các bộ sưu tập:
show collections
Thông báo kết quả:
artists jazz musicians producers
Và cuối cùng, truy vấn jazz bộ sưu tập:
db.jazz.find().pretty()
Thông báo kết quả:
{ "_id" : ObjectId("578214f048ef8c6b3ffb0159"), "artistname" : "Miles Davis", "albums" : [ { "album" : "Kind of Blue", "year" : 1959, "genre" : "Jazz" }, { "album" : "Bitches Brew", "year" : 1970, "genre" : "Jazz" } ] }
Nhập tệp CSV
Bạn có thể nhập tệp CSV bằng cách sử dụng --type csv
.
Nếu tệp CSV có hàng tiêu đề, hãy sử dụng --headerline
nói với
mongoimport
sử dụng dòng đầu tiên để xác định tên của các trường trong tài liệu kết quả.
Nếu tệp CSV không có hàng tiêu đề, hãy sử dụng --fields
tham số để đặt tên trường.
Với hàng tiêu đề
Đây là một ví dụ về cách nhập tài liệu có hàng tiêu đề.
Nội dung của tệp CSV:
_id,albumname,artistname 1,Killers,"Iron Maiden" 2,Powerslave,"Iron Maiden" 12,"Somewhere in Time","Iron Maiden" 3,"Surfing with the Alien","Joe Satriani" 10,"Flying in a Blue Dream","Joe Satriani" 11,"Black Swans and Wormhole Wizards","Joe Satriani" 6,"Out of the Loop","Mr Percival" 7,"Suck on This",Primus 8,"Pork Soda",Primus 9,"Sailing the Seas of Cheese",Primus
Nhập tệp:
mongoimport --db music --collection catalog --type csv --headerline --file /data/dump/music/catalog.csv
Truy vấn bộ sưu tập:
> db.catalog.find() { "_id" : 2, "albumname" : "Powerslave", "artistname" : "Iron Maiden" } { "_id" : 1, "albumname" : "Killers", "artistname" : "Iron Maiden" } { "_id" : 3, "albumname" : "Surfing with the Alien", "artistname" : "Joe Satriani" } { "_id" : 12, "albumname" : "Somewhere in Time", "artistname" : "Iron Maiden" } { "_id" : 10, "albumname" : "Flying in a Blue Dream", "artistname" : "Joe Satriani" } { "_id" : 6, "albumname" : "Out of the Loop", "artistname" : "Mr Percival" } { "_id" : 7, "albumname" : "Suck on This", "artistname" : "Primus" } { "_id" : 8, "albumname" : "Pork Soda", "artistname" : "Primus" } { "_id" : 11, "albumname" : "Black Swans and Wormhole Wizards", "artistname" : "Joe Satriani" } { "_id" : 9, "albumname" : "Sailing the Seas of Cheese", "artistname" : "Primus" }
Không có hàng tiêu đề
Đây là một tệp CSV khác, nhưng tệp này không có hàng tiêu đề:
Mutt Lange, 1948 John Petrucci, 1967 DJ Shadow, 1972 George Clinton, 1941
Bây giờ chúng tôi sẽ nhập nó và chỉ định tên trường để sử dụng:
mongoimport --db music --collection producers --type csv --fields name,born --file /data/dump/music/producers.csv
Truy vấn bộ sưu tập:
> db.producers.find() { "_id" : 1, "name" : "Bob Rock" } { "_id" : ObjectId("5784a3a5dfad478c015f6b72"), "name" : "John Petrucci", "born" : 1967 } { "_id" : ObjectId("5784a3a5dfad478c015f6b73"), "name" : "Mutt Lange", "born" : 1948 } { "_id" : ObjectId("5784a3a5dfad478c015f6b74"), "name" : "George Clinton", "born" : 1941 } { "_id" : ObjectId("5784a3a5dfad478c015f6b75"), "name" : "DJ Shadow", "born" : 1972 }
Bạn sẽ thấy rằng ObjectId trường đã được tự động tạo và điền cho chúng tôi.
Ngoài ra, chúng tôi đã có một tài liệu trong bộ sưu tập này trước khi chạy quá trình nhập: {"_id":1, "name":"Bob Rock"} . Do đó, bạn có thể thấy rằng quá trình nhập chỉ được thêm vào vào bộ sưu tập (thay vì thay thế nó và tất cả nội dung của nó).
Bạn có thể sử dụng cùng một phương pháp để nhập tệp TSV. Chỉ cần sử dụng --type tsv
.