sql >> Database >  >> RDS >> PostgreSQL

Kopieer enkele kolommen van een csv-bestand naar een tabel

Als het een ad-hoctaak is

Maak een tijdelijke tabel met alle kolommen in het invoerbestand

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

Kopieer van het bestand erin:

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

Voeg nu in de definitieve tabel van de temp in:

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

En laat het vallen:

drop table t

Als het een frequente taak is

Gebruik de file_fdw verlenging. Als supergebruiker:

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' )
;

Verleen selectietoestemming op de tafel aan de gebruiker die deze zal lezen:

grant select on table my_csv to the_read_user;

Lees dan indien nodig rechtstreeks uit het csv-bestand alsof het een tabel is:

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


  1. De voordelen van PostgreSQL

  2. Inactieve sessie in Oracle door JDBC

  3. Ondersteunde formaatmodellen voor de ROUND() en TRUNC() datumfuncties in Oracle

  4. Gegevens invoegen van de ene databasetabel naar een andere databasetabel in Mysql