Olen melko varma, että jokainen meistä on ollut tilanteessa, jossa sinun on täytynyt luoda raportti ja/tai poimia tietoja tietokannasta ja esittää ne taulukkolaskentaohjelmassa. Monissa tapauksissa asiakkaamme suosivat mieluummin Exceliä käsittelemään taulukkoja/raportteja, koska, duh, se on Excel.

Miten siis lähestyt tätä ongelmaa? Kopioitko ja liitätkö tietoja? Vai käytätköRDBMS:n graafista käyttöliittymää raportin luomiseksi taulukkolaskentataulukkoon? Tänään näytän sinulle PostgreSQL:n todella pienen mutta kätevän ominaisuuden -COPY.

Hello COPY#

COPYdokumentaatiosta: ”COPY siirtää tietoja PostgreSQL-taulujen ja standarditiedostojärjestelmän tiedostojen välillä. COPY TO kopioi taulukon sisällön tiedostoon, kun taasCOPY FROM kopioi tietoja tiedostosta taulukkoon (liittämällä tiedot siihen, mitä taulukossa jo on). COPY TO voi myös kopioida SELECT-kyselyn tulokset.”

Mitä COPY tekee:

  1. Se voi kopioida tiedoston sisällön (data) taulukkoon tai
  2. Se voi kopioida taulukon sisällön (tai SELECT-kyselyn tuloksen) tiedostoon.

Jos sarakeluettelo on määritetty, COPY kopioi vain määritettyjen sarakkeiden tiedot tiedostoon tai tiedostosta. Jos taulukossa on sarakkeita, jotka eivät ole sarakeluettelossa, COPY FROM lisää oletusarvot näihin sarakkeisiin.

COPY tiedostonimen kanssa käskee PostgreSQL-palvelinta lukemaan suoraan tiedostosta tai kirjoittamaan tiedostoon. Tiedoston on oltava palvelimen käytettävissä ja nimi on määriteltävä palvelimen näkökulmasta. Kun STDIN tai STDOUT onspesifioitu, tiedot siirretään asiakkaan ja palvelimen välisen yhteyden kautta.

Kuulostaa hyvältä? Kokeillaan!

Disclaimer: COPY pystyy lukemaan/kirjoittamaan dataa CSV- ja binääritiedostoista/tiedostoihin. Vaikka olen varma, että binääritiedostojen käyttökohteita on paljon, keskityn tässä blogikirjoituksessa vain CSV-tiedostojen käyttämiseen, koska ne ovat minulle henkilökohtaisesti kätevimpiä tietokokonaisuuksien luovuttamiseen.

COPY TO#

Kun haluat luoda CSV-tiedoston SELECT-kyselystä tai dumpata taulukon koko sisällön CSV-tiedostoon, voit käyttää komentoa ”COPY … TO …”.

SELECT-kyselyn käyttäminen#

Kun haluat kopioida tulosjoukon CSV-tiedostoon, COPY-komennon muoto on:

1
COPY (<select-query-here>) TO <file-path>;

Otapa todellisempi esimerkki:

1
COPY (SELECT * FROM people WHERE age > 21) TO '~/Desktop/adults.csv';

Kuten näet, käytämme COPY-komentoa, joka kopioi tulokset paikallisen tiedostojärjestelmän CSV-tiedostoon. Voit viedä kyselyn paljon pidemmälle. Tässä on reaaliaikainen esimerkki projektista, jonka parissa työskentelen parhaillaan:

1
COPY (SELECT price_rules.* FROM quotes LEFT JOIN price_rules ON quotes.id = price_rules.chargeable_id where quotes.id = 437) TO '~/Desktop/exports/price_rules.csv' CSV;

Kuten huomaat, voit käyttää mitä tahansa SELECT-kyselyä, joka pystyy palauttamaan datatulosjoukon.Mutta mitäpä CSV olisi ilman otsikoita, eikö? 🙂

1
COPY (SELECT * FROM people WHERE age > 21) TO '~/Desktop/adults.csv' CSV HEADER;

Lisäämällä CSV-tiedoston loppuun avainsanan HEADER sisällytetään CSV-tiedostoon otsikot,jotka ovat taulukon sarakkeiden nimiä.

Myös toinen CSV-tiedostojen keskeinen piirre ovat rajaukset. Riippuen siitä, minkämerkkisen erotinmerkin haluat CSV-tiedostossa olevan, voit määrittää merkin komennossa:

1
COPY (SELECT * FROM people WHERE age > 21) TO '~/Desktop/adults.csv' CSV DELIMITER ',' HEADER;

Taulukon nimen käyttäminen#

Kun haluat kokonaisen taulukon dumppauksen CSV-tiedostoon, komento on todellayksinkertainen. Sinun tarvitsee vain määrittää taulukon nimi ja kohdetiedosto:

1
COPY people TO '~/Desktop/people.csv' CSV DELIMITER ',' HEADER;

Se on siinä.

COPY FROM#

Nyt kun haluat syöttää CSV-tiedoston tiedot taulukkoon, voit käyttää komentoa ”COPY &mldr; FROM &mldr;”. Syntaksi on hyvin samankaltainen, ja siinä on vain yksiavain ero:

1
COPY <table-name> FROM <file-path> DELIMITER ',' CSV HEADER;

Vai käytänkö todellista esimerkkiä:

1
COPY addresses FROM '~/Desktop/addresses.csv' DELIMITER ',' CSV HEADER;

Outro#

KOPIOINTI (COPY) on Postgresin todella siisti ja hieno ominaisuus. Brewityn vuoksi yritin pitää tämän blogipostauksen lyhyenä ja yksinkertaisena. Jos sinulla on ajatuksia ja kysymyksiävoi vapaasti heittää minulle kommenttia. Tai jos et tunne oloasi puheliaaksi, voit siirtyä COPY-dokumentaatioon.

Piditkö tästä artikkelista? Tilaa uutiskirjeeni ja saat tuoreet postaukseni postilaatikkoosi. Se on lyhyt ja suloinen, ja se lähetetään kuukausittain yli 1 000 tilaajalle.

Vastaa

Sähköpostiosoitettasi ei julkaista.