Ir al contenido


Foto

Funcion en postgresql importar archivo csv


  • Por favor identifícate para responder
1 respuesta en este tema

#1 thelibmx

thelibmx

    Newbie

  • Miembros
  • Pip
  • 6 mensajes
  • LocationMéxico

Escrito 02 noviembre 2020 - 02:33

Hola compañeros, espero puedan ayudarme con algo que considero es simple pero no he podido resolver.
Estoy haciendo una función que me importe un archivo CSV a una tabla en postgre,
cuando utilizo la línea del ejemplo 1 lo realiza sin problemas.  
Pero cuando quiero hacerlo por referencia en el ejemplo 2 asigno a las variables "archivo" y "ruta"  los resultados de una consulta (aparentemente lo hace).
El problema es cuando los intento referenciar despúes del from no se como indicarle que haga referencia al contenido de las variables
 y concatene esas dos variables para que juntas sean una ruta como en el ejemplo 1

 

sql
  1. ----------------------------------------------
  2. CREATE OR REPLACE FUNCTION carga_catalogo() RETURNS void AS $$
  3. DECLARE
  4. ruta VARCHAR:= (SELECT ruta_activa FROM rutas WHERE tabla='catalogo');-- "C:/a/"
  5. archivo VARCHAR :=(SELECT nom_archivo FROM rutas WHERE tabla='catalogo');-- "catalogo.csv"
  6.  
  7. BEGIN
  8.  
  9. --EJEMPLO 1 copy catalogo ( folio,producto) FROM 'C:/a/catalogo.csv' DELIMITER ',' CSV HEADER ;
  10.  
  11. --Ejemplo 2
  12. copy catalogo ( folio,producto) FROM 'ruta||archivo' DELIMITER ',' CSV HEADER ;
  13.  
  14. END;
  15. $$language pLpGSQL VOLATILE;

 


  • 0

#2 gatosoft

gatosoft

    Member

  • Miembros
  • PipPip
  • 31 mensajes
  • LocationColombia

Escrito 11 noviembre 2020 - 04:16

 

Hola compañeros, espero puedan ayudarme con algo que considero es simple pero no he podido resolver.
Estoy haciendo una función que me importe un archivo CSV a una tabla en postgre,
cuando utilizo la línea del ejemplo 1 lo realiza sin problemas.  
Pero cuando quiero hacerlo por referencia en el ejemplo 2 asigno a las variables "archivo" y "ruta"  los resultados de una consulta (aparentemente lo hace).
El problema es cuando los intento referenciar despúes del from no se como indicarle que haga referencia al contenido de las variables
 y concatene esas dos variables para que juntas sean una ruta como en el ejemplo 1

 

sql
  1. ----------------------------------------------
  2. CREATE OR REPLACE FUNCTION carga_catalogo() RETURNS void AS $$
  3. DECLARE
  4. ruta VARCHAR:= (SELECT ruta_activa FROM rutas WHERE tabla='catalogo');-- "C:/a/"
  5. archivo VARCHAR :=(SELECT nom_archivo FROM rutas WHERE tabla='catalogo');-- "catalogo.csv"
  6.  
  7. BEGIN
  8.  
  9. --EJEMPLO 1 copy catalogo ( folio,producto) FROM 'C:/a/catalogo.csv' DELIMITER ',' CSV HEADER ;
  10.  
  11. --Ejemplo 2
  12. copy catalogo ( folio,producto) FROM 'ruta||archivo' DELIMITER ',' CSV HEADER ;
  13.  
  14. END;
  15. $$language pLpGSQL VOLATILE;

 

 

 

 

intenta ejecutar el comando con:

 

execute format('copy catalogo from %s with delimiter '','' quote ''"'' csv ', csv_path);


  • 0