我写了一个Postgres函数,它涉及在表格中插入记录。它需要一些参数作为输入。
CREATE OR REPLACE FUNCTION public.add_person(
name character varying,
email character varying,
level integer,
company_id integer,
comp_list integer[])
我有一个CSV,其列与该函数的输入参数匹配。如何将CSV作为输入列表提供并调用该函数?
修改
该数据库位于AWS的RDS实例中。所以我没有superuser
权限将文件复制到临时表。 file_fdw
也不是一个选项,因为Amazon RDS不支持此扩展程序。
答案 0 :(得分:0)
根据COPY
syntax,您需要一个表格来从CSV文件导入数据。使用临时表来缓冲文件中的数据,例如:
do $$
begin
create temp table temp (
name character varying,
email character varying,
level integer,
company_id integer,
comp_list integer[]);
copy temp from 'c:\data\test.csv' (format csv, header);
perform add_person(name, email, level, company_id, comp_list)
from temp;
drop table temp;
end
$$;
或者,您可以使用扩展程序file_fdw,
示例:
create extension if not exists file_fdw;
create server csv_server foreign data wrapper file_fdw;
create foreign table csv_file (
name character varying,
email character varying,
level integer,
company_id integer,
comp_list integer[]
) server csv_server
options (filename 'c:\data\test.csv', format 'csv', header 'on');
select add_person(name, email, level, company_id, comp_list)
from csv_file;