यदि यह एक तदर्थ कार्य है
इनपुट फ़ाइल में सभी स्तंभों के साथ एक अस्थायी तालिका बनाएं
create temporary table t (x1 integer, ... , x10 text)
फ़ाइल से इसमें कॉपी करें:
copy t (x1, ... , x10)
from '/path/to/my_file'
with (format csv)
अब अस्थायी से निश्चित तालिका में डालें:
insert into my_table (x2, x5, x7, x10)
select x2, x5, x7, x10
from t
और इसे छोड़ दें:
drop table t
अगर यह बार-बार होने वाला काम है
file_fdw
का उपयोग करें विस्तार। सुपरयूज़र के रूप में:
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' )
;
इसे पढ़ने वाले उपयोगकर्ता को टेबल पर चुनिंदा अनुमति दें:
grant select on table my_csv to the_read_user;
फिर जब भी आवश्यक हो सीधे सीएसवी फ़ाइल से पढ़ें जैसे कि यह एक तालिका थी:
insert into my_table (x2)
select x2
from my_csv
where x1 = 2