Nếu đó là một nhiệm vụ đặc biệt
Tạo một bảng tạm thời với tất cả các cột trong tệp đầu vào
create temporary table t (x1 integer, ... , x10 text)
Sao chép từ tệp vào đó:
copy t (x1, ... , x10)
from '/path/to/my_file'
with (format csv)
Bây giờ hãy chèn vào bảng cuối cùng từ tạm thời:
insert into my_table (x2, x5, x7, x10)
select x2, x5, x7, x10
from t
Và thả nó xuống:
drop table t
Nếu đó là công việc thường xuyên
Sử dụng file_fdw
sự mở rộng. Là siêu người dùng:
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' )
;
Cấp quyền lựa chọn trên bảng cho người dùng sẽ đọc nó:
grant select on table my_csv to the_read_user;
Sau đó, bất cứ khi nào cần thiết, hãy đọc trực tiếp từ tệp csv như thể nó là một bảng:
insert into my_table (x2)
select x2
from my_csv
where x1 = 2