sql >> Database teknologi >  >> RDS >> PostgreSQL

Importerer zippet CSV-fil til PostgreSQL

Der er et gammelt trick til at bruge et navngivet rør (fungerer på Unix, kender ikke til Windows)

  • opret et navngivet rør:mkfifo /tmp/omyfifo
  • skriv filindholdet til det:zcat mycsv.csv.z > /tmp/omyfifo &
  • [fra psql] copy mytable(col1,...) from '/tmp/omyfifo'
  • [når færdig] :rm /tmp/omyfifo

zcat i baggrunden vil blokere indtil en læser (her:COPY kommando) begynder at læse, og den slutter ved EOF. (eller hvis læseren lukker røret)

Du kan endda starte flere pipes+zcat-par, som vil blive opfanget af flere COPY udsagn i dit sql-script.

Dette vil fungere fra pgadmin, men fifo (+zcat-processen) bør være til stede på den maskine, hvor DBMS-serveren kører.

BTW:et lignende trick ved hjælp af netcat kan bruges til at læse en fil fra en ekstern maskine (som selvfølgelig skal skrive filen til netværkssocket)



  1. alternativ til listagg i Oracle?

  2. PG::UndefineretTabel:FEJL:Relationen eksisterer ikke med en korrekt Rails-navngivning og -konvention

  3. Hvordan grupperer jeg efter uge i MySQL?

  4. ResultSet#getDate() semantik