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