Công cụ cơ sở dữ liệu MongoDB bao gồm một tiện ích có tên là mongoexport
cho phép bạn xuất dữ liệu MongoDB sang tệp CSV hoặc JSON.
Bài viết này hướng dẫn bạn cách sử dụng mongoexport
để xuất bộ sưu tập MongoDB sang tệp CSV.
Cú pháp
Cú pháp cho mongoexport
như sau:
mongoexport --collection=<coll> <options> <connection-string>
Bạn cần chạy mongoexport
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).
Không chạy mongoexport
các lệnh từ mongo
vỏ bọc.
Xuất Bộ sưu tập
Mã ví dụ sau xuất một bộ sưu tập từ MongoDB:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --out=data/pets.csv
Thao tác này xuất một bộ sưu tập có tên là pets
từ PetHotel
cơ sở dữ liệu vào một tệp có tên pets.csv
trong data/
thư mục.
Nếu thư mục không tồn tại, nó sẽ được tạo. Tương tự với tệp. Nhân tiện, điều này giả định rằng không có vấn đề về quyền nào với việc ghi tệp vào vị trí được chỉ định.
Trong ví dụ này, tôi không chỉ định bất kỳ máy chủ, cổng, xác thực nào, v.v., vì vậy nó xuất bộ sưu tập từ phiên bản MongoDB chạy trên số cổng máy chủ cục bộ mặc định 27017
.
Dưới đây là giải thích về các thông số chúng tôi cung cấp tại đây.
Tham số | Mô tả |
---|---|
--db hoặc -d | Chỉ định cơ sở dữ liệu có chứa bộ sưu tập mà chúng tôi muốn xuất. Trong trường hợp này, cơ sở dữ liệu được gọi là PetHotel . Tham số này có thể được chuyển theo cách khác bằng cách sử dụng -d (thay vì --db ). |
--collection hoặc -c | Chỉ định bộ sưu tập mà chúng tôi muốn xuất. Trong trường hợp này, bộ sưu tập được gọi là pets . Tham số này có thể được chuyển theo cách khác là -c (thay vì --collection ). |
--type | Chỉ định loại tệp được xuất. Trong trường hợp này, chúng tôi chỉ định csv để xuất nó sang tệp CSV. |
--fields | Chỉ định các trường mà chúng ta muốn xuất. Chúng tôi có tùy chọn xuất tất cả các trường trong bộ sưu tập hoặc chỉ một số trường. Bạn cần liệt kê từng cái ở đây, được phân tách bằng dấu phẩy. Khi xuất sang CSV, việc chỉ định tên trường là một yêu cầu bắt buộc. Bạn có thể làm như vậy thông qua --fields tham số hoặc --fieldFile tham số (thêm về điều đó sau). |
--out | Chỉ định tên tệp đã xuất và vị trí của tệp. Nếu bạn không chỉ định tên tệp, hãy mongoexport ghi dữ liệu vào đầu ra chuẩn (stdout ). |
Kiểm tra tệp đã xuất
Hãy xác minh rằng hoạt động xuất hoạt động như mong đợi.
Trước tiên, hãy kiểm tra bộ sưu tập gốc.
use PetHotel
db.pets.find()
Kết quả:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 } { "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 } { "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }
Vì vậy, chúng tôi có thể thấy rằng có 7 vật nuôi, tất cả đều có cùng các trường mà chúng tôi đã chỉ định trong hoạt động xuất của mình.
Bây giờ, hãy mở tệp đã xuất pets.csv
để xem những gì bên trong:
_id,name,type,weight 1,Wag,Dog,20 2,Bark,Dog,10 3,Meow,Cat,7 4,Scratch,Cat,8 5,Bruce,Bat,3 6,Fetch,Dog,17 7,Jake,Dog,30
OK, vậy là tất cả dữ liệu đều có trong tệp được xuất như mong đợi.
Xóa tiêu đề cột
Bạn sẽ nhận thấy rằng tệp được xuất trong ví dụ trước bao gồm các tiêu đề cột.
Bạn cũng có tùy chọn xuất tệp không có tiêu đề cột. Để thực hiện việc này, hãy sử dụng --noHeaderLine
tham số.
Ví dụ:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --noHeaderLine --out=data/pets.csv
Bây giờ khi tôi mở tệp đã xuất, không có tiêu đề cột:
1,Wag,Dog,20 2,Bark,Dog,10 3,Meow,Cat,7 4,Scratch,Cat,8 5,Bruce,Bat,3 6,Fetch,Dog,17 7,Jake,Dog,30
Sử dụng tệp cho tên trường
Bạn có thể thay thế --field
tham số với --fieldFile
để chỉ định tên của tệp có chứa tên trường mà bạn muốn xuất.
mongoexport --db=PetHotel --collection=pets --type=csv --fieldFile=data/pets_fields.txt --out=data/pets.csv
Tệp chứa các trường phải có các trường được liệt kê, mỗi trường một dòng.
Đây là nội dung của pets_fields.txt
tệp trông giống như cho ví dụ này:
_id name type weight
Điều này dẫn đến nội dung của tệp được xuất trông giống như sau:
_id,name,type,weight 1,Wag,Dog,20 2,Bark,Dog,10 3,Meow,Cat,7 4,Scratch,Cat,8 5,Bruce,Bat,3 6,Fetch,Dog,17 7,Jake,Dog,30
Thay đổi Thứ tự Cột
Bạn có thể chuyển đổi thứ tự của các trường để xuất. Chúng không nhất thiết phải theo cùng một thứ tự của tài liệu cơ bản.
Ví dụ, mã này:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,weight,type,name --out=data/pets.csv
Kết quả trong tệp CSV sau:
_id,weight,type,name 1,20,Dog,Wag 2,10,Dog,Bark 3,7,Cat,Meow 4,8,Cat,Scratch 5,3,Bat,Bruce 6,17,Dog,Fetch 7,30,Dog,Jake
Và những điều sau:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=type,name,weight,_id --out=data/pets.csv
Kết quả là:
type,name,weight,_id Dog,Wag,20,1 Dog,Bark,10,2 Cat,Meow,7,3 Cat,Scratch,8,4 Bat,Bruce,3,5 Dog,Fetch,17,6 Dog,Jake,30,7
Kiểm soát truy cập / Xác thực
Nếu không sử dụng localhost, bạn có thể sử dụng --host
tham số để chỉ định máy chủ và --port
để chỉ định cổng. Bạn cũng có thể sử dụng --username
tham số để chỉ định tên người dùng và --password
cho mật khẩu. Nếu bạn bỏ qua tham số mật khẩu, bạn sẽ được nhắc nhập tham số đó. Ngoài ra còn có một --authenticationDatabase
tham số để chỉ định cơ sở dữ liệu xác thực nơi người dùng đã được tạo.
Ví dụ:
mongoexport --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --out=data/pets.csv
Kiểm tra mongoexport
mongoexport
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 / mongoexport
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:
mongoexport --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 lệnh ở đâu?
Đừng quên, bạn cần chạy mongoexport
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.