sql - Postgresql 11 - 创建执行 COPY 函数的过程
问题描述
我目前正在尝试创建一个过程,以便在调用该过程时自动将数据复制到我的数据库中。但是,每次我调用它时,都会出现以下错误:
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'。
推荐阅读
- android - 无法为 android 执行方法:onClick
- python - Python将值从字典映射到数据框
- python - TensorFlow 根据索引从每一行删除元素(gather_nd 的否定)
- python - 退出算法pygame无法正常工作
- javascript - 使用 es6 导入并执行文件夹中的所有文件
- jq - JQ,两个查询,在json的不同部分,合并回来
- javascript - 安全登录到 Vue.js SPA
- vba - 在会话之间使用增量变量复制文件
- c# - 无效的列名 | C#
- javascript - 如何使用 Jest + Enzyme 测试谷歌地图功能是否在 componentDidUpdate() 上运行?