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).