我正在尝试编写一个将 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
的客户端代码。