我正在尝试将这个语句转换为一个函数:
\copy aux("nombre") TO '/home/david/lugares.csv' delimiters ';';
所以我接下来要做的是:
CREATE OR REPLACE FUNCTION crearcsv()
RETURNS void AS
$BODY$
DECLARE STATEMENT TEXT;
BEGIN
RAISE NOTICE 'CREAR CSV';
STATEMENT:= '\copy aux ("nombre") TO ''/home/david/lugares.csv'' delimiters '';'';';
RAISE NOTICE '%',STATEMENT;
EXECUTE STATEMENT;
END;$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
但是当我调用该函数时,出现以下错误:
注意:\copy aux ("nombre") TO '/home/david/lugares.csv' delimiters ';'; 错误:语法错误或附近的“\”
LINE 1: \copy aux ("nombre") TO '/home/david/lugares.csv' delimiters... ^
查询:\copy aux ("nombre") TO '/home/david/lugares.csv' delimiters ';';
上下文:PL/pgSQL函数crearcsv()第7行执行语句**
这个语句在PSQL控制台上可以正常工作。
有什么帮助吗?
\copy
是一个psql命令,它做的事情与sql命令copy几乎相同,最重要的区别在于\copy
使用运行psql的计算机文件系统上的文件,而copy
使用服务器文件系统上的文件。因此,它们非常相似但不完全相同,并且您不能在函数中使用\copy,因为它不是一个SQL命令。 - fvu\copy
是psql
命令,只能在psql
中执行。它不是通用的 SQL 语句。 - user330315