Postgresql 11 - 创建过程以执行 COPY 函数

Postgresql 11 - Create Procedure to Execute COPY function

我目前正在尝试创建一个过程,以便在我调用该过程时自动将数据复制到我的数据库中。但是,每次调用它时都会出现以下错误:

ERROR:  column "name" does not exist
LINE 1: SELECT format('COPY test(%L) FROM %s CSV HEADER', name, '/Us...

列不存在怎么办?这是我写的所有内容:

CREATE PROCEDURE 
test_insert() AS
$$ 

BEGIN 

EXECUTE format('COPY test(%L) FROM %s CSV HEADER', name, '/Users/Receiving.csv');


END; 

$$ LANGUAGE plpgsql;

如果使用不带单引号的name,则在(默认)SELECT语句

中被解释为列名
SELECT format('...', name, '...')

当您执行函数时 PL/pgSQL 运行。

由于此 SELECT 语句没有 FROM 子句,您会得到观察到的错误。

解决方案是改用字符串文字,即写'name'而不是'name'。