sql >> Databáze >  >> NoSQL >> MongoDB

Jak exportovat výsledky dotazu MongoDB do souboru CSV

Databázové nástroje MongoDB zahrnují nástroj nazvaný mongoexport který vám umožňuje exportovat data MongoDB do souboru CSV nebo JSON.

Jednou z věcí, které můžete s tímto nástrojem udělat, je export výsledků dotazu. Tento článek ukazuje, jak používat mongoexport exportovat výsledky dotazů MongoDB do souboru CSV.

Syntaxe

Syntaxe pro mongoexport vypadá takto:

mongoexport --collection=<coll> <options> <connection-string>

Musíte spustit mongoexport příkazy z příkazového řádku vašeho systému (např. nový terminál nebo okno příkazového řádku).

Nespouštějte mongoexport příkazy z mongo skořápka.

Příklad

Následující ukázkový kód exportuje výsledky dotazu do souboru CSV:

mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.csv

Tím se exportuje dotaz, který se dotazuje na kolekci nazvanou pets v PetHotel databáze. Dotaz je exportován do souboru s názvem dogs.csv v data/ složka.

Pokud složka neexistuje, je vytvořena. To samé se souborem. To mimochodem předpokládá, že při zápisu souboru do zadaného umístění neexistují žádné problémy s oprávněními.

V tomto příkladu jsem nespecifikoval žádného hostitele, port, ověřování atd., takže exportuje kolekci z instance MongoDB běžící na výchozím čísle portu localhost 27017 .

Níže je vysvětlení parametrů, které jsme zde uvedli.

Parametr Popis
--db
nebo
-d
Určuje databázi, na které se má spustit mongoexport . V tomto případě se databáze nazývá PetHotel .
Tento parametr lze alternativně předat pomocí -d (místo --db ).
--collection
nebo
-c
Určuje kolekci, kterou chceme exportovat (nebo pro kterou chcete spustit dotaz). V tomto případě se kolekce nazývá pets .
Tento parametr lze alternativně předat jako -c (místo --collection ).
--type Určuje typ exportovaného souboru. V tomto případě zadáme csv exportovat do souboru CSV.
--fields Určuje pole, která chceme exportovat. Máme možnost exportovat všechna pole nebo jen některá. Zde musíte všechny uvést oddělené čárkou. Při exportu do CSV je požadavkem zadání názvů polí. Můžete tak učinit pomocí --fields nebo --fieldFile parametr (více o tom později).
--query
nebo
-q
Udává dotaz, pro které výsledky chceme exportovat. Toto musí být uzavřeno v jednoduchých uvozovkách (aby neinteragovalo s vaším shellem).
Tento parametr lze také předat pomocí -q .
--out Udává název exportovaného souboru a místo, kde bude umístěn. Pokud nezadáte název souboru, mongoexport zapisuje data na standardní výstup (stdout ).

Zkontrolujte exportovaný soubor

Ověřte, že operace exportu fungovala podle očekávání.

Nejprve spusťte dotaz proti původní kolekci.

use PetHotel
db.pets.find({ "type": "Dog" })

Výsledek:

{ "_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 }

Můžeme tedy vidět, že existují 4 psi, všichni se stejnými poli, která jsme specifikovali v naší exportní operaci.

Nyní otevřeme exportovaný soubor dogs.csv abyste viděli, co je uvnitř:

_id,name,type,weight
1,Wag,Dog,20
2,Bark,Dog,10
6,Fetch,Dog,17
7,Jake,Dog,30

OK, takže všechna data jsou v exportovaném souboru podle očekávání.

Exportovat méně polí

Pomocí --fields můžete zadat méně polí parametr, chcete-li.

Příklad:

mongoexport --db=PetHotel --collection=pets --type=csv --fields=name,weight --query='{ "type": "Dog" }' --out=data/dogs.csv

Výsledný soubor:

name,weight
Wag,20
Bark,10
Fetch,17
Jake,30

Odstranit záhlaví sloupců

Všimnete si, že exportovaný soubor v předchozích příkladech obsahoval záhlaví sloupců.

Máte také možnost exportovat soubor bez záhlaví sloupců. Chcete-li to provést, použijte --noHeaderLine parametr.

Příklad:

mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --query='{ "type": "Dog" }' --noHeaderLine --out=data/dogs.csv

Nyní, když otevřu exportovaný soubor, nejsou zde žádná záhlaví sloupců:

1,Wag,Dog,20
2,Bark,Dog,10
6,Fetch,Dog,17
7,Jake,Dog,30

Pro názvy polí použijte soubor

--field můžete nahradit parametr s --fieldFile parametr k určení názvu souboru, který obsahuje názvy polí, která chcete exportovat.

mongoexport --db=PetHotel --collection=pets --type=csv --fieldFile=data/dogs_fields.txt --query='{ "type": "Dog" }' --out=data/dogs.csv

Soubor obsahující pole musí mít uvedená pole, jedno na řádek.

Zde je soubor dogs_fields.txt soubor vypadal v tomto příkladu:

name
type
weight

To vedlo k tomu, že obsah exportovaného souboru vypadal takto:

name,type,weight
Wag,Dog,20
Bark,Dog,10
Fetch,Dog,17
Jake,Dog,30

Změna pořadí sloupců

Můžete změnit řazení polí pro export. Nemusí být ve stejném pořadí jako podkladový dokument.

Například tento kód:

mongoexport --db=PetHotel --collection=pets --type=csv --fields=type,name,weight,_id --query='{ "type": "Dog" }' --out=data/dogs.csv

Výsledky v následujícím souboru CSV:

type,name,weight,_id
Dog,Wag,20,1
Dog,Bark,10,2
Dog,Fetch,17,6
Dog,Jake,30,7

Řízení přístupu/ověření

Pokud nepoužíváte localhost, můžete použít --host parametr k určení hostitele a --port specifikovat port. Můžete také použít --username parametr k zadání uživatelského jména a --password pro heslo. Pokud parametr heslo vynecháte, budete k jeho zadání vyzváni. K dispozici je také --authenticationDatabase parametr pro specifikaci autentizační databáze, kde byl uživatel vytvořen.

Příklad:

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

Vyhledejte mongoexport

mongoexport je součástí balíčku databázových nástrojů MongoDB. Databázové nástroje MongoDB jsou sada nástrojů příkazového řádku pro práci s MongoDB.

Pokud si nejste jisti, zda máte MongoDB Database Tools/mongoexport nainstalovaný, zkuste spustit následující příkaz v terminálu nebo příkazovém řádku a zkontrolujte:

mongoexport --version

Pokud ji máte, měli byste vidět informace o verzi atd. Pokud ji nemáte, můžete ji nainstalovat do svého systému pomocí pokynů k instalaci na webu MongoDB.

Kde spustit příkazy?

Nezapomeňte, že musíte spustit mongoexport příkazy z příkazového řádku vašeho systému (např. nový terminál nebo okno příkazového řádku).


  1. MongoDB:Načítat pouze dokumenty vytvořené za posledních 24 hodin?

  2. MongoDB jako úložiště souborů

  3. MongoDB jako služba fronty?

  4. Jak na to:Použijte rozhraní Apache HBase REST, část 1