Создайте временную таблицу со всеми столбцами во входном файле
create temporary table t (x1 integer, ... , x10 text)
Скопируйте из файла в файл:
copy t (x1, ... , x10)
from '/path/to/my_file'
with (format csv)
Теперь вставьте в окончательную таблицу из temp:
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;
Затем, когда необходимо, читайте непосредственно из файла csv, как если бы это было таблица:
insert into my_table (x2)
select x2
from my_csv
where x1 = 2
Тип Saga1
относится к функции генератора . Эти функции возвращают итератор при вызове, но вам не нужно беспокоиться об этом аспекте, поскольку ReduxSaga вызывает функцию и взаимодействует с итератором. Вы можете увидеть пример использования runSaga
в этого CodeSandbox , который я создал для этого другого вопроса .