MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak wyeksportować wyniki zapytania MongoDB do pliku CSV

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jaki jest właściwy sposób tworzenia synchronicznego zapytania MongoDB w Node.js?

  2. Zoptymalizowany sposób zapytań w MongoDB za pomocą $in vs $or

  3. Mongoose Model.find nie jest funkcją?

  4. Wykonywanie zapytań regex za pomocą PyMongo

  5. Opcja automatycznego ponownego łączenia Mongoose