sql >> Databáze >  >> RDS >> PostgreSQL

Import zazipovaného CSV souboru do PostgreSQL

Existuje starý trik na použití pojmenované roury (funguje na Unixu, nevím o Windows)

  • vytvořte pojmenovaný kanál:mkfifo /tmp/omyfifo
  • zapište do něj obsah souboru:zcat mycsv.csv.z > /tmp/omyfifo &
  • [z psql] copy mytable(col1,...) from '/tmp/omyfifo'
  • [po dokončení]:rm /tmp/omyfifo

zcat na pozadí se zablokuje, dokud nebude čtečka (zde:COPY příkaz) začne číst a skončí na EOF. (nebo pokud čtečka zavře potrubí)

Můžete dokonce spustit několik párů potrubí + zcat, které budou zachyceny několika COPY příkazy ve vašem skriptu SQL.

To bude fungovat z pgadmin, ale fifo (proces +zcat) by měl být přítomen na počítači, kde běží server DBMS.

BTW:podobný trik pomocí netcat lze použít ke čtení souboru ze vzdáleného počítače (což by samozřejmě mělo zapsat soubor do síťového soketu)



  1. Jak rozdělit postgresovou tabulku pomocí mezilehlé tabulky

  2. kontingenční tabulka Oracle - jak změnit položky řádků na sloupce

  3. Jaký je nejlepší způsob, jak zjistit, kterou verzi klienta Oracle používám?

  4. Úvod do SQL Serveru