database - 将路径作为参数传递给函数
问题描述
我有一个函数,我将 apath
作为参数传递给文件。在函数中,我想要COPY
位于path
CREATE OR REPLACE FUNCTION load(path varchar)
RETURNS void
LANGUAGE plpgsql
AS
$$
BEGIN
COPY foo FROM path
WITH DELIMITER ';'
CSV HEADER;
...
end;
$$
这给出了一个Syntax Error
,指向path
。如果我对path
to 进行硬编码C:\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;
$$
推荐阅读
- java - 如何从多行 EditText 获取字符串文本
- angular - ngFor 没有在 Angular 中实时更新列表值
- java - 创建名为“sessionfactory”的 bean 时出错 (java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException)
- javascript - 是否有在数组中查找 json 对象的当前索引的函数?
- php - 页面没有在php中重定向到自我
- reactjs - 如何通过 withRouter 为注入的属性指定类型(typeScript)?
- database - 休眠关系问题
- java - RegEx 用于检查字符串中是否存在大写字母
- css - 如何在不使用引导程序中的 css 的情况下向 div 添加填充?
- javascript - 我想在单击按钮时将数据提交到 Cloud Firestore 文档