Bueno, me faltaba usar la sentencia EXECUTE.
Pese a todo, la sentencia dentro de la función no va, y fuera sí.
Aclaro:
Esta es la función "bien":
Código SQL:
Ver originalCREATE OR REPLACE FUNCTION crearcsv()
RETURNS void AS
$BODY$
DECLARE SENTENCIA TEXT;
BEGIN
RAISE NOTICE 'CREAR CSV';
SENTENCIA:= '\copy aux ("nombre") TO ''/home/david/lugares.csv'' delimiters '';'';';
RAISE NOTICE '%',SENTENCIA;
EXECUTE SENTENCIA;
END;$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Pero si la ejecuto:
Obtengo esto:
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
Pero si ejecuto la orden directamente no tengo problemas:
Código SQL:
Ver original\copy aux("nombre") TO '/home/david/lugares.csv' delimiters ';';