如何解决PostgreSQL 循环中复制命令的错误
我正在 Postgresql 13 中编写一个简单的函数,但有一些我无法解决的错误。这是重现错误的简化代码:
create or replace function my_schema.test_function(some_directory text default 'Downloads')
returns void
language plpgsql
as
$body$
declare
home_dir text := '/home/my_user_name/';
file_path text;
one_csv text;
csv_arr text[] = array['file_1.csv','file_2.csv','file_3.csv'];
begin
drop table if exists to_insert;
create temp table to_insert(col1 text,col2 timestamptz);
foreach one_csv in array csv_arr
loop
file_path = home_dir || some_directory || '/' || one_csv;
copy to_insert (col1,col2)
from file_path
delimiter ','
csv header;
end loop;
delete from my_schema.target_table;
insert into my_schema.target_table
select * from to_insert;
drop table if exists to_insert;
end
$body$
抱歉没有突出显示,我不知道如何在stackoverflow上突出显示Postgresql。
我在运行代码时得到的错误是:
ERROR: Syntax error at or near "file_path"
LINE 22: from file_path
如果不是 file_path
我只是拼出路径,例如'/home/my_user_name/Downloads/file_1.csv'
,然后代码按预期执行而没有任何错误。但这当然不是我想做的。我需要为每个循环变量构建不同的路径。
知道我缺少什么以及如何使我的功能正常工作吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。