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

[SOLUCIONADO] Importar Varios archivos csv a Postgresql

Estas en el tema de Importar Varios archivos csv a Postgresql en el foro de PostgreSQL en Foros del Web. Que tal buen día a todos: Estoy comenzando a interactuar un poco con PostgreSQL 8.4.9 y tengo la necesidad de subir varios archivos .CSV a ...
  #1 (permalink)  
Antiguo 03/04/2013, 17:07
 
Fecha de Ingreso: abril-2013
Ubicación: Ciudad de México
Mensajes: 4
Antigüedad: 11 años, 7 meses
Puntos: 1
Pregunta Importar Varios archivos csv a Postgresql

Que tal buen día a todos:

Estoy comenzando a interactuar un poco con PostgreSQL 8.4.9 y tengo la necesidad de subir varios archivos .CSV a una tabla que ya tengo definida, y la tarea de hacer uno por uno resulta bastante fastidiosa.

Asi es como subo un archivo y no tengo ningun problema:

\copy portafolio FROM 'C:\Users\LAP-52\ARCHIVOSCSV\archivo1.csv' WITH DELIMITER AS ',' CSV HEADER;

Existe una manera de subir mas de un archivo a la vez? Es decir que suba todos los archivos existentes en ese directorio?

Saludos.
  #2 (permalink)  
Antiguo 04/04/2013, 09:27
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Importar Varios archivos csv a Postgresql

Te recomiendo hacer uso de un programa para etl (extraction, transformation and loading) como pentaho o talend (de la suite de spago).

Este tipo de software trae componentes bastante transparentes para hacer ese tipo de tareas.

O depronto, un software con java o .net que te lea el contenido de un directorio y ejecute las sentencias de copy directamente.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 04/04/2013, 10:36
 
Fecha de Ingreso: abril-2013
Ubicación: Ciudad de México
Mensajes: 4
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: Importar Varios archivos csv a Postgresql

Gracias por responder huesos22. Si de hecho el uso de alguna herramienta etl fue en lo primero que pense para dicho proceso. Sin embargo me tienen limitado con el uso de dichas herramientas o almenos de que sea alguna herramienta etl libre. Conoces algun etl open source que me puedas recomendar y que trabaje muy bien con postgres?? .

Que bueno parece ser que no podemos usar alguna herramienta etl.

Sabes si en la parte FROM del comando copy se puede establecer como variable la ruta de donde consumira el archivo?
saludos

Cita:
Iniciado por huesos52 Ver Mensaje
Te recomiendo hacer uso de un programa para etl (extraction, transformation and loading) como pentaho o talend (de la suite de spago).

Este tipo de software trae componentes bastante transparentes para hacer ese tipo de tareas.

O depronto, un software con java o .net que te lea el contenido de un directorio y ejecute las sentencias de copy directamente.

saludos

Última edición por jsanchezt; 04/04/2013 a las 11:07
  #4 (permalink)  
Antiguo 04/04/2013, 12:26
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Importar Varios archivos csv a Postgresql

Las 2 que te dije son libres.

Tanto pentaho como talend.

http://www.talend.com/download/data-integration

Te recomiendo mas talend. Exactamente lo que dices, lo trabajé con un componente llamado tfilelist.
http://vikramtakkar.blogspot.com/201...component.html

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 04/04/2013, 12:39
 
Fecha de Ingreso: abril-2013
Ubicación: Ciudad de México
Mensajes: 4
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: Importar Varios archivos csv a Postgresql

Muchas gracias por las respuestas. Checare ambas opciones.

Una pregunta mas. Es posible ejecutar una instruccion, como el copy desde un punto bat? si si me podrias dar un ejemplo de ello?

Saludos y gracias nuevamente.

Cita:
Iniciado por huesos52 Ver Mensaje
Las 2 que te dije son libres.

Tanto pentaho como talend.

[url]http://www.talend.com/download/data-integration[/url]

Te recomiendo mas talend. Exactamente lo que dices, lo trabajé con un componente llamado tfilelist.
[url]http://vikramtakkar.blogspot.com/2012/12/understanding-tfilelist-component.html[/url]

saludos
  #6 (permalink)  
Antiguo 04/04/2013, 12:43
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Importar Varios archivos csv a Postgresql

Se que se puede, pero no tengo un ejemplo.

Pero ya puedes buscar mas bien por foros de windows y de tareas programdas.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 04/04/2013, 15:08
 
Fecha de Ingreso: abril-2013
Ubicación: Ciudad de México
Mensajes: 4
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: Importar Varios archivos csv a Postgresql

Que tal nuevamente yo. Les comento ya resolvi mi duda de importar varios archivos csv a una tabla en postgres a la vez, dejo la solucion que realice por si mas adelante alguien la necesita.

Realice dos archivos .bat uno llamado principal y otro llamado anidado.

ARCHIVO principal.bat

for /R C:\Users\LAP-52\Documents\ %%i IN (*.CSV) DO (
@rem
anidado.bat C:\Users\LAP-52\Documents\%%~nxi
MOVE %%i C:\Users\LAP-52\Documents\TEMP
)

--------------------------------------------------------------------------------------------------------

ARCHIVO anidado.bat:

@echo off

SET server=localhost
SET /P server="Server [%server%]: "

SET database=postgres
SET /P database="Database [%database%]: "

SET port=5432
SET /P port="Port [%port%]: "

SET username=postgres
SET /P username="Username [%username%]: "

for /f "delims=" %%a in ('chcp ^|find /c "932"') do @ SET CLIENTENCODING_JP=%%a
if "%CLIENTENCODING_JP%"=="1" SET PGCLIENTENCODING=SJIS
if "%CLIENTENCODING_JP%"=="1" SET /P PGCLIENTENCODING="Client Encoding [%PGCLIENTENCODING%]: "

SET cadena="\copy portafolio FROM '%1%' WITH DELIMITER AS ',' CSV HEADER;"

REM Run psql
"C:\Program Files\PostgreSQL\9.2\bin\psql.exe" -h %server% -U %username% -d %database% -p %port% -c %cadena%

--------------------------------------------------------------------------------------------------------
NOTA: Se pueden establecer los parametros de autenticacion a postgres por default, solo que en el ejemplo se los deje como estan en las variables de entorno.

ej:

"C:\Program Files\PostgreSQL\9.2\bin\psql.exe" -h "192.168.XXX.XXX" -U "Miusuario" -d "MibaseDatos" -p "Puerto" -c %cadena%


Si hay alguna sugerencia para mejorar este codigo comentenmela porfavor al igual si surgen dudas.

Saludos.

Etiquetas: as, csv, postgres, tabla
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 11:44.