传递一个路径作为函数的参数



我有一个函数,我将一个path作为参数传递给一个文件。在函数中,我想要COPY位于path

的数据
CREATE OR REPLACE FUNCTION load(path varchar)
RETURNS void
LANGUAGE plpgsql
AS
$$
BEGIN
COPY foo FROM path
WITH DELIMITER ';' 
CSV HEADER;
...
end;
$$

给出一个指向pathSyntax Error。如果我硬编码pathC:Users....,它工作。为什么呢?

copy不能处理变量。塑造和执行动态SQL。这是一个例子-你的例子修改。为了清楚起见,我使用美元报价。

CREATE OR REPLACE FUNCTION load(path text) RETURNS void LANGUAGE plpgsql AS
$$
begin
execute replace(
$dynsql$
COPY foo FROM '__PATH__'
WITH DELIMITER ';' 
CSV HEADER;
$dynsql$,
'__PATH__', path);
...
end;
$$

相关内容

  • 没有找到相关文章

最新更新