Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/08/2015, 11:42
dehm
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: Exportar tabla a CSV usando una función

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 original
  1. CREATE OR REPLACE FUNCTION crearcsv()
  2.   RETURNS void AS
  3. $BODY$
  4. DECLARE SENTENCIA TEXT;
  5. BEGIN
  6.     RAISE NOTICE 'CREAR CSV';
  7.     SENTENCIA:= '\copy aux ("nombre") TO ''/home/david/lugares.csv'' delimiters '';'';';    
  8.     RAISE NOTICE '%',SENTENCIA;
  9.     EXECUTE SENTENCIA;
  10. END;$BODY$
  11.   LANGUAGE plpgsql VOLATILE
  12.   COST 100;

Pero si la ejecuto:
Código SQL:
Ver original
  1. SELECT crearcsv();

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
  1. \copy aux("nombre") TO '/home/david/lugares.csv' delimiters ';';
__________________
Mi calculadora en Qt