Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Exportar tabla a CSV usando una función

Estas en el tema de Exportar tabla a CSV usando una función en el foro de PostgreSQL en Foros del Web. Bueno, pues me gustaría hacer una función para exportar una tabla a una función. Esto es lo que quiero hacer: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver ...
  #1 (permalink)  
Antiguo 24/08/2015, 10:24
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 6 meses
Puntos: 10
Exportar tabla a CSV usando una función

Bueno, pues me gustaría hacer una función para exportar una tabla a una función.

Esto es lo que quiero hacer:
Código SQL:
Ver original
  1. \copy mitabla("col1","col2"...) TO 'ruta' DELIMITERS ';';

y Esto es lo que intento pero me da error al intentar crear la función:
Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION crearcsv()
  2.   RETURNS void AS
  3. $BODY$
  4.         BEGIN
  5.                 RAISE NOTICE 'Crear CSV';
  6.                 \copy mitabla("col1","col2"...) TO 'ruta' DELIMITERS ';';
  7.         END;
  8. $BODY$
  9.   LANGUAGE plpgsql VOLATILE
  10.   COST 100;
__________________
Mi calculadora en Qt
  #2 (permalink)  
Antiguo 24/08/2015, 11:42
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 6 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
  #3 (permalink)  
Antiguo 25/08/2015, 02:16
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: Exportar tabla a CSV usando una función

Bueno, parece que el problema es que \copy tambien necesita ser usado por el superusuario (al igual que COPY) dentro de una función.


¿Alguien me da alguna idea de cómo enfocar la solución?
__________________
Mi calculadora en Qt

Etiquetas: csv, tabla, usando
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:40.