PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Skopiuj kilka kolumn pliku csv do tabeli

Jeśli jest to zadanie ad hoc

Utwórz tabelę tymczasową ze wszystkimi kolumnami w pliku wejściowym

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

Skopiuj do niego z pliku:

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

Teraz wstaw do ostatecznej tabeli z temp:

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

I upuść to:

drop table t

Jeśli jest to częste zadanie

Użyj file_fdw rozbudowa. Jako superużytkownik:

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

Przyznaj uprawnienie wyboru w tabeli użytkownikowi, który go przeczyta:

grant select on table my_csv to the_read_user;

Następnie, w razie potrzeby, czytaj bezpośrednio z pliku csv tak, jakby to była tabela:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybrać pierwszy wiersz w każdej grupie GROUP BY?

  2. Jak Div() działa w PostgreSQL

  3. Jak uniknąć zapętlania się wywołań wyzwalaczy w PostgreSQL 9.2.1?

  4. Jak wypełnić brakujące daty w PostgreSQL za pomocą generate_series

  5. Jak wybrać rekordy z ostatnich 24 godzin w PostgreSQL?