Narzędzia baz danych MongoDB zawierają narzędzie o nazwie mongoexport
który umożliwia eksportowanie danych MongoDB do pliku CSV lub JSON.
Ten artykuł pokazuje, jak używać mongoexport
aby wyeksportować kolekcję MongoDB do pliku CSV.
Składnia
Składnia mongoexport
idzie tak:
mongoexport --collection=<coll> <options> <connection-string>
Musisz uruchomić mongoexport
polecenia z wiersza poleceń systemu (np. nowe okno terminala lub wiersza polecenia).
Nie uruchamiaj mongoexport
polecenia z mongo
powłoka.
Eksportuj kolekcję
Poniższy przykładowy kod eksportuje kolekcję z MongoDB:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --out=data/pets.csv
Spowoduje to wyeksportowanie kolekcji o nazwie pets
z PetHotel
bazy danych do pliku o nazwie pets.csv
w data/
teczka.
Jeśli folder nie istnieje, jest tworzony. To samo z plikiem. Nawiasem mówiąc, zakłada się, że nie ma problemów z uprawnieniami do zapisu pliku w określonej lokalizacji.
W tym przykładzie nie określiłem żadnego hosta, portu, uwierzytelniania itp., więc eksportuje kolekcję z instancji MongoDB działającej na domyślnym porcie hosta lokalnego o numerze 27017
.
Poniżej znajduje się wyjaśnienie parametrów, które tutaj podaliśmy.
Parametr | Opis |
---|---|
--db lub -d | Określa bazę danych zawierającą kolekcję, którą chcemy wyeksportować. W tym przypadku baza danych nazywa się PetHotel . Ten parametr można alternatywnie przekazać za pomocą -d (zamiast --db ). |
--collection lub -c | Określa kolekcję, którą chcemy wyeksportować. W tym przypadku kolekcja nazywa się pets . Ten parametr można alternatywnie przekazać jako -c (zamiast --collection ). |
--type | Określa typ eksportowanego pliku. W tym przypadku określamy csv aby wyeksportować go do pliku CSV. |
--fields | Określa pola, które chcemy wyeksportować. Mamy możliwość wyeksportowania wszystkich pól w kolekcji lub tylko niektórych. Musisz je tutaj wymienić, oddzielone przecinkami. Podczas eksportowania do CSV wymagane jest określenie nazw pól. Możesz to zrobić za pomocą --fields lub parametr --fieldFile parametr (więcej o tym później). |
--out | Określa nazwę eksportowanego pliku i jego lokalizację. Jeśli nie określisz nazwy pliku, mongoexport zapisuje dane na standardowe wyjście (stdout ). |
Sprawdź wyeksportowany plik
Sprawdźmy, czy operacja eksportu przebiegła zgodnie z oczekiwaniami.
Najpierw sprawdźmy oryginalną kolekcję.
use PetHotel
db.pets.find()
Wynik:
{ "_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 }
Widzimy więc, że jest 7 zwierząt domowych, wszystkie z tymi samymi polami, które określiliśmy w naszej operacji eksportu.
Teraz otwórzmy wyeksportowany plik pets.csv
aby zobaczyć, co jest w środku:
_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, więc wszystkie dane znajdują się w wyeksportowanym pliku zgodnie z oczekiwaniami.
Usuń nagłówki kolumn
Zauważysz, że wyeksportowany plik w poprzednim przykładzie zawierał nagłówki kolumn.
Masz również możliwość wyeksportowania pliku bez nagłówki kolumn. Aby to zrobić, użyj --noHeaderLine
parametr.
Przykład:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --noHeaderLine --out=data/pets.csv
Teraz, gdy otwieram wyeksportowany plik, nie ma nagłówków kolumn:
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
Użyj pliku dla nazw pól
Możesz zastąpić --field
parametr z --fieldFile
parametr, aby określić nazwę pliku zawierającego nazwy pól, które chcesz wyeksportować.
mongoexport --db=PetHotel --collection=pets --type=csv --fieldFile=data/pets_fields.txt --out=data/pets.csv
Plik zawierający pola musi mieć wymienione pola, po jednym w wierszu.
Oto, co pets_fields.txt
plik wyglądał jak w tym przykładzie:
_id name type weight
Spowodowało to, że zawartość wyeksportowanego pliku wyglądała tak:
_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
Zmiana kolejności kolumn
Możesz zmienić kolejność pól do eksportu. Nie muszą być w tej samej kolejności co podstawowy dokument.
Na przykład ten kod:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,weight,type,name --out=data/pets.csv
Wyniki w następującym pliku CSV:
_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
Oraz następujące:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=type,name,weight,_id --out=data/pets.csv
Wyniki w tym:
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
Kontrola dostępu/uwierzytelnianie
Jeśli nie używasz localhost, możesz użyć --host
parametr określający hosta oraz --port
aby określić port. Możesz także użyć --username
parametr określający nazwę użytkownika i --password
do dla hasła. Jeśli pominiesz parametr hasła, zostaniesz o to poproszony. Istnieje również --authenticationDatabase
parametr określający bazę danych uwierzytelniania, w której utworzono użytkownika.
Przykład:
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
Sprawdź mongoexport
mongoexport
jest częścią pakietu MongoDB Database Tools. Narzędzia baz danych MongoDB to zestaw narzędzi wiersza poleceń do pracy z MongoDB.
Jeśli nie masz pewności, czy masz narzędzia bazy danych MongoDB/mongoexport
zainstalowany, spróbuj uruchomić następujące polecenie w terminalu lub wierszu polecenia, aby sprawdzić:
mongoexport --version
Jeśli go masz, powinieneś zobaczyć informacje o wersji itp. Jeśli go nie masz, możesz skorzystać z instrukcji instalacji na stronie MongoDB, aby zainstalować ją w swoim systemie.
Gdzie uruchamiać polecenia?
Nie zapomnij, musisz uruchomić mongoexport
polecenia z wiersza poleceń systemu (np. nowe okno terminala lub wiersza polecenia).
Nie uruchamiaj ich z mongo
powłoka.