动态 SQL 在转义字符上失败

Dynamic SQL fails on escape char

我正在尝试编写一个将 csv 加载到 table 中的过程。我创建一个动态 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?

\copypsql 命令,而不是 SQL 语句。

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

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

的客户端代码