动态 SQL 在转义字符上失败



我正在尝试编写一个将 csv 加载到表中的过程。我创建一个动态 sql 并执行它。

v_sql = 'copy test_table from' || ' '''  || p_temp_dir || ''' '  || ' with csv header;';
--insert into test
--select v_sql;
EXECUTE v_sql;

当我检查生成的字符串时,它很好,我可以正确运行它,但是如果我从过程运行它,我会收到一个错误:

syntax error at or near ""

如果我删除字符,它可以工作(抛出一个错误,指出没有这样的文件;这项工作旨在在本地机器上工作(。如何执行此 SQL?

copy是一个psql命令,而不是一个SQL语句。

您只能使用 PL/pgSQL 的EXECUTE语句执行 SQL 语句。

不能在服务器上运行的 PostgreSQL 函数中从客户端计算机导入文件。您必须编写执行COPY ... FROM STDIN的客户端代码。

最新更新