Narzędzia baz danych MongoDB zawierają narzędzie o nazwie mongoexport który umożliwia eksportowanie danych MongoDB do pliku CSV lub JSON.
Jedną z rzeczy, które możesz zrobić za pomocą tego narzędzia, jest eksport wyników zapytania. Ten artykuł pokazuje, jak używać mongoexport aby wyeksportować wyniki zapytania 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.
Przykład
Poniższy przykładowy kod eksportuje wyniki zapytania do pliku CSV:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.csv
To eksportuje zapytanie, które odpytuje kolekcję o nazwie pets w PetHotel Baza danych. Zapytanie jest eksportowane do pliku o nazwie dogs.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, na której należy uruchomić mongoexport . 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ć (lub uruchomić zapytanie). 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ść eksportu wszystkich pól 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). |
--query lub -q | Określa zapytanie, którego wyniki chcemy wyeksportować. Musi to być ujęte w pojedyncze cudzysłowy (aby nie wchodziło w interakcje z twoją powłoką). Ten parametr można również przekazać za pomocą -q . |
--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 przeprowadźmy zapytanie względem oryginalnej kolekcji.
use PetHotel
db.pets.find({ "type": "Dog" }) Wynik:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 } Widzimy więc, że są 4 psy, wszystkie z tymi samymi polami, które określiliśmy w naszej operacji eksportu.
Teraz otwórzmy wyeksportowany plik dogs.csv aby zobaczyć, co jest w środku:
_id,name,type,weight 1,Wag,Dog,20 2,Bark,Dog,10 6,Fetch,Dog,17 7,Jake,Dog,30
OK, więc wszystkie dane znajdują się w wyeksportowanym pliku zgodnie z oczekiwaniami.
Eksportuj mniej pól
Możesz określić mniej pól za pomocą --fields parametr, jeśli chcesz.
Przykład:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=name,weight --query='{ "type": "Dog" }' --out=data/dogs.csv Wynikowy plik:
name,weight Wag,20 Bark,10 Fetch,17 Jake,30
Usuń nagłówki kolumn
Zauważysz, że wyeksportowany plik w poprzednich przykładach 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 --query='{ "type": "Dog" }' --noHeaderLine --out=data/dogs.csv Teraz, gdy otwieram wyeksportowany plik, nie ma nagłówków kolumn:
1,Wag,Dog,20 2,Bark,Dog,10 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/dogs_fields.txt --query='{ "type": "Dog" }' --out=data/dogs.csv Plik zawierający pola musi mieć wymienione pola, po jednym w wierszu.
Oto, co dogs_fields.txt plik wyglądał jak w tym przykładzie:
name type weight
Spowodowało to, że zawartość wyeksportowanego pliku wyglądała tak:
name,type,weight Wag,Dog,20 Bark,Dog,10 Fetch,Dog,17 Jake,Dog,30
Zmiana kolejności kolumn
Możesz zmienić kolejność pól do eksportu. Nie muszą być w tej samej kolejności co dokument bazowy.
Na przykład ten kod:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=type,name,weight,_id --query='{ "type": "Dog" }' --out=data/dogs.csv Wyniki w następującym pliku CSV:
type,name,weight,_id Dog,Wag,20,1 Dog,Bark,10,2 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 --query='{ "type": "Dog" }' --out=data/dogs.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).