我想創建這一說法成一個函數:我可以將 copy命令用於postgresql的函數嗎?
\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;
但我得到的未來時,我打電話給該函數:
NOTICE: \copy aux ("nombre") TO '/home/david/lugares.csv' delimiters ';'; ERROR: syntax error at or near "\"
LINE 1: \copy aux ("nombre") TO '/home/david/lugares.csv' delimiters... ^
QUERY: \copy aux ("nombre") TO '/home/david/lugares.csv' delimiters ';';
CONTEXT: PL/pgSQL function crearcsv() line 7 at EXECUTE statement**
此聲明在PSQL控制檯中工作正常
任何幫助?
這是因爲'\ copy'是一個[psql命令](http://www.postgresql.org/docs/9.3/static/app-psql.html),它或多或少地執行了[sql command copy ](http://www.postgresql.org/docs/9.3/static/sql-copy.html) - 最重要的區別是'\ copy'使用運行psql的計算機的文件系統上的文件,而'copy'使用服務器文件系統上的文件。因此,它們高度相似但不完全相同,並且您不能在函數中使用\ copy,因爲它不是sql命令。 – fvu
'\ copy'是一個'psql'命令,只能**從'psql'中執行。它不是**一般的SQL語句。 –
那麼,我該怎麼做這個功能呢? – user3733164