PostgreSQL 11-创建执行COPY功能的程序

时间:2018-12-11 03:07:03

标签: sql postgresql plpgsql sqlbulkcopy

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

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;

1 个答案:

答案 0 :(得分:0)

如果您使用name而不使用单引号,则它会在(默认)SELECT语句中解释为列名

SELECT format('...', name, '...')

执行功能时PL / pgSQL运行。

由于此SELECT语句没有FROM子句,您会看到明显的错误。

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