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

Kopier nogle få af kolonnerne i en csv-fil til en tabel

Hvis det er en ad hoc-opgave

Opret en midlertidig tabel med alle kolonnerne i inputfilen

create temporary table t (x1 integer, ... , x10 text)

Kopier fra filen til den:

copy t (x1, ... , x10)
from '/path/to/my_file'
with (format csv)

Indsæt nu i den endelige tabel fra temp:

insert into my_table (x2, x5, x7, x10)
select x2, x5, x7, x10
from t

Og slip det:

drop table t

Hvis det er en hyppig opgave

Brug file_fdw udvidelse. Som superbruger:

create extension file_fdw;

create server my_csv foreign data wrapper file_fdw;

create foreign table my_csv (
    x1 integer,
    x2 text,
    x3 text
) server my_csv
options (filename '/tmp/my_csv.csv', format 'csv' )
;

Giv den valgte tilladelse på bordet til den bruger, der vil læse den:

grant select on table my_csv to the_read_user;

Læs derefter, når det er nødvendigt, direkte fra csv-filen, som om det var en tabel:

insert into my_table (x2)
select x2
from my_csv
where x1 = 2


  1. Dynamisk SQL (oversætter tabelnavn som parameter)

  2. Sådan finder du datoformatet, der bruges i den aktuelle session i SQL Server (T-SQL)

  3. Batch Mode Bitmaps i SQL Server

  4. Sådan overvåger du PostgreSQL, der kører inde i en Docker-container:Anden del