sql >> Databasteknik >  >> RDS >> PostgreSQL

Importerar zippad CSV-fil till PostgreSQL

Det finns ett gammalt knep för att använda en namngiven pipe (fungerar på Unix, vet inte om Windows)

  • skapa en namngiven pipe:mkfifo /tmp/omyfifo
  • skriv filens innehåll till den:zcat mycsv.csv.z > /tmp/omyfifo &
  • [från psql] copy mytable(col1,...) from '/tmp/omyfifo'
  • [när du är klar] :rm /tmp/omyfifo

zcat i bakgrunden kommer att blockeras tills en läsare (här:COPY). kommando) börjar läsa och avslutas vid EOF. (eller om läsaren stänger röret)

Du kan till och med starta flera pipes+zcat-par, som plockas upp av flera COPY uttalanden i ditt sql-skript.

Detta kommer att fungera från pgadmin, men fifo (+zcat-processen) bör finnas på maskinen där DBMS-servern körs.

BTW:ett liknande knep med netcat kan användas för att läsa en fil från en fjärrdator (som naturligtvis ska skriva filen till nätverksuttaget)



  1. Oracle Infoga via Välj från flera tabeller där en tabell kanske inte har en rad

  2. Vad du ska övervaka i MySQL 8.0

  3. Hur man ansluter till en MySQL- eller MariaDB-databas

  4. MariaDB JSON_VALID() Förklarad