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

PostgreSQL CSV import fra kommandolinjen

Løsningen i det accepterede svar vil kun virke på serveren, og når brugeren, der udfører forespørgslen, vil have tilladelse til at læse filen som forklaret i dette SO-svar.

Ellers er en mere fleksibel tilgang at erstatte SQL's COPY kommandoen med psql 's "meta-kommando" kaldet \copy som tager alle de samme muligheder som den "rigtige" COPY, men køres inde i klienten (uden behov for ; til sidst):

psql -c "\copy tbname FROM '/tmp/the_file.csv' delimiter '|' csv"

I henhold til dokumenter er \copy kommando:

Udfører en frontend (klient) kopi. Dette er en operation, der kører en SQL COPY-kommando, men i stedet for at serveren læser eller skriver den angivne fil, læser eller skriver psql filen og dirigerer data mellem serveren og det lokale filsystem. Det betyder, at filtilgængelighed og -privilegier er dem, der tilhører den lokale bruger, ikke serveren, og der kræves ingen SQL-superbrugerprivilegier.

Desuden, hvis the_file.csv indeholder overskriften i den første linje, den kan genkendes ved at tilføje header i slutningen af ​​ovenstående kommando:

psql -c "\copy tbname FROM '/tmp/the_file.csv' delimiter '|' csv header"


  1. Sådan viser du MySQL-processer

  2. Konfigurationssystemet kunne ikke initialiseres

  3. En oversigt over SQL Join-typer med eksempler

  4. Konverter en juliansk dag til en dato i PostgreSQL