Nagyon biztos vagyok benne, hogy mindenki volt már olyan helyzetben, amikor szükség volt egy jelentés létrehozására és/vagy adatok kinyerésére egy adatbázisból, és azok bemutatására egy táblázatban. Sok esetben az ügyfeleink inkább az Excel-t részesítik előnyben a táblázatok/jelentések kezelésében, mert, duh, ez az Excel.
Szóval, hogyan közelíti meg ezt a problémát? Másolja és beilleszti az adatokat? Vagy egyRDBMS GUI-t használ a jelentés táblázatkezelőbe történő generálásához? Ma megmutatom neked a PostgreSQL -COPY egy igazán apró, de kényelmes funkcióját.
Hello COPY#
A COPYdokumentációból: “A COPY adatokat mozgat a PostgreSQL táblák és a szabványos fájlrendszer fájljai között. A COPY TO egy táblázat tartalmát másolja egy fájlba, míg aCOPY FROM egy fájlból másolja az adatokat egy táblázatba (az adatokat a már a táblázatban lévő adatokhoz csatolja). A COPY TO egy SELECT lekérdezés eredményét is át tudja másolni.”
A COPY tehát mit csinál:
- Egy fájl tartalmát (az adatokat) át tudja másolni egy táblázatba, vagy
- Egy táblázat tartalmát (vagy egy SELECT lekérdezés eredményét) át tudja másolni egy fájlba.
Ha oszlopok listája van megadva, a COPY csak a megadott oszlopok adatait másolja a fájlba vagy a fájlból. Ha a táblázatban vannak olyan oszlopok, amelyek nem szerepelnek az oszloplistában, a COPY FROM az alapértelmezett értékeket illeszti be ezekbe az oszlopokba.
COPY egy fájlnévvel utasítja a PostgreSQL szervert, hogy közvetlenül olvasson egy fájlból vagy írjon egy fájlba. A fájlnak elérhetőnek kell lennie a kiszolgáló számára, és a nevet a kiszolgáló szemszögéből kell megadni. Ha STDIN vagy STDOUT van megadva, az adatok a kliens és a szerver közötti kapcsolaton keresztül kerülnek továbbításra.
Jól hangzik? Próbáljuk ki!
Kizáró nyilatkozat: A COPY képes adatokat olvasni/írni CSV és Binary fájlokból/ba. Bár biztos vagyok benne, hogy rengeteg felhasználási eset van a bináris fájlok használatára, ebben a blogbejegyzésben csak a CSV fájlok használatára fogok koncentrálni, mert személy szerint számomra ezek a legkényelmesebbek az adathalmazok átadásához.
COPY TO#
Ha egy SELECT lekérdezésből CSV fájlt akar létrehozni, vagy egy táblázat összes tartalmát egy CSV fájlba akarja dumpolni, használhatja a “COPY … TO …” parancsot.
SELECT-lekérdezés használata#
Ha egy eredményhalmazt szeretne egy CSV-fájlba másolni, a COPYparancs formátuma:
|
|
Vagy egy életszerűbb példa:
|
|
Mint látható, a COPY parancsot használjuk, amely az eredményeket egy CSV-fájlba másolja a helyi fájlrendszerbe. A lekérdezést sokkal tovább is vihetjük. Íme egy életszerű példa egy projektből, amelyen jelenleg dolgozom:
|
|
Amint látja, bármilyen SELECT lekérdezést használhat, amely visszaad egy adat eredményhalmazt.De mit ér egy CSV fejlécek nélkül, igaz? 🙂
|
|
A HEADER kulcsszó hozzáadásával a végén a CSV fájlba fejlécek kerülnek,amelyek a táblázat oszlopainak nevei.
A CSV fájlok másik fontos jellemzője az elhatárolók. Attól függően, hogy milyen karakteres elválasztójelet szeretne a CSV-fájlban, megadhatja a karaktert a parancsban:
|
|
Táblázatnév használata#
Ha egy teljes táblázatot szeretne egy CSV-be kiüríteni, a parancs igazánegyszerűbb. Csak a táblázat nevét és a célfájlt kell megadnia:
|
|
Ez minden.
COPY FROM#
Most, amikor a CSV fájlból származó adatokat egy táblázatba akarja beilleszteni, használhatja a “COPY … FROM …” parancsot. A szintaxis nagyon hasonló, csak egykulcsnyi különbséggel:
|
|
Vagy, egy valós példával élve:
|
|
Outro#
A COPY a Postgres egy nagyon szép és jó funkciója. A brewity miatt igyekeztem ezt a blogbejegyzést röviden és egyszerűen tartani. Ha bármilyen gondolatod és kérdésed van, nyugodtan írj egy kommentet. Vagy, ha nem érzed magad beszédesnek, átmehetsz a COPYdokumentációra.
Tetszett ez a cikk? Iratkozzon fel a hírlevelemre, és kapja meg a friss bejegyzéseimet a postaládájába. Rövid és kedves, havonta megy ki több mint 1000 feliratkozónak.