sql >> Databáze >  >> RDS >> PostgreSQL

Zkopírujte několik sloupců souboru csv do tabulky

Pokud se jedná o úkol ad hoc

Vytvořte dočasnou tabulku se všemi sloupci ve vstupním souboru

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

Zkopírujte do něj ze souboru:

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

Nyní vložte do definitivní tabulky z temp:

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

A pusťte to:

drop table t

Pokud je to častý úkol

Použijte file_fdw rozšíření. Jako superuživatel:

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

Udělte oprávnění k výběru tabulky uživateli, který ji bude číst:

grant select on table my_csv to the_read_user;

V případě potřeby pak čtěte přímo ze souboru csv, jako by to byla tabulka:

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


  1. Jak aktualizovat pomocí vnitřního spojení v Oracle

  2. jak předřadit řetězec před sekvencí generovanou postgresql?

  3. Mám aplikaci pro Android, která načítá data ze sqlite a zobrazuje data v BaseAdapteru .. jaký je nejlepší způsob?

  4. Jak vrátíte názvy sloupců tabulky?