Hitachi Vantara Pentaho Community Forums
Results 1 to 6 of 6

Thread: Cargar múltiples archivos planos.

  1. #1
    Join Date
    Apr 2010
    Posts
    4

    Lightbulb Cargar múltiples archivos planos.

    Buenas tardes para todos, he estado trabajando con la integración de datos desde hace poco y encuentro un inconveniente el cual no me ha dejado progresar con la carga de los archivos a una bdd.

    En la compañía donde trabajo se cargan constantemente archivos planos para actualizar las bases de datos, es extremadamente complejo implementar un sistema para actualizar desde una bdd a la otra, por este motivo se implementó el sistema de archivos planos, en total son cerca de 40 archivos con extensión .txt de diferentes tamaños y en total generan algo mas de 5 millones de registros.

    He podido crear la lectura de los archivos y sus respectivos registros, todo esto gracias a un comodín que me permite hacer esto fácilmente en la carpeta donde son almacenados (este es el comodín por si alguna persona se le presenta el caso de leer multiples archivos de una misma carpeta. ".*\.txt"), pero a la hora de cargarlos únicamente me carga a la base de datos un bloque igual al "tamaño de la transacción (commit)" que hay en el proceso de salida a la tabla (he probado en access, mysql y postgres), si pongo en este campo un valor muy grande, se queda bloqueado el proceso.

    La pregunta concreta es.

    Que procedimiento se debe implementar, o que corrección sobre el proceso ya sea de entrada o de salida, de tal forma que pueda cargar todos los registros de todos los archivos en un solo paso?

    muchas gracias de antemano a las respuestas que me den orientación o solución al inconveniente.

  2. #2
    Join Date
    Jun 2010
    Posts
    14

    Default

    ¿Qué versión de PDI usas?

    A mí me pasaba lo mismo, en un proceso más sencillo que el que cuentas, con la versión 4.0.0.
    He instalado la 4.0.1 y se ha resuelto el problema.

  3. #3
    Join Date
    Apr 2010
    Posts
    4

    Default

    Hola pic3, en el momento de la consulta al foro tenia la versión 4.0.0, luego he instalado la 4.0.1 y el error persiste. no se si exista algún manual de errores presentados a la hora de ejecutar el proceso?

  4. #4
    Join Date
    Feb 2009
    Posts
    321

    Talking

    hola carlos buenas tardes, mira no se bien que es lo que queres hacer pero si queres cargar multiples archivos lo que yo te recomendaria es que levantes el nombre de los archivos o sea que vas a tener algo asi de 40 nombres, y pasas de a una a un job dentro de ese job seteas la variable del nombre del file y si puedes del nombre de la tabla (supongamos que en este caso es el mismo) entonces si tenes por ej: una lista de files cuyo nombre es tabla_1.txt, tabla_2.txt, ..... tabla_40.txt. haces lo siguiente

    job --> trasnformacion1
    --> obtienes los nombres de los archivos ( con tu comodin) --> copy rows to result
    job (enable execute for every row)
    --> transformacion1 --> get rows from previous result --> set variables
    --> transformation 2 --> text input --> table_output

    en text input pones ${name_variable} al igual que en table ouput en el nombre de la tabla (recordemos que dijimos que eran iguales) .

    Esto lo que deberia hacer es tomar el primer nombre del txt supongamos table_1.txt y se queda con table_1 lo pasa a la otra transformacion y setea el nombre cuando pasa a la otra transformacion toma el archivo de texto con el valor que tiene la variable ${name_variable} en ese momento que en este caso es table_1 y lo insertaria en la tabla table_1 de la base de datos, cuando termina pasa al segundo nombre de la lista ( en este caso table_2.txt) y vuelve a repetir el mismo proceso.
    Implementando esto no deberias tener problemas ni de performance ni de memoria para solo 5 millones de registros...
    saludos , espero que te sirva
    Hernan

  5. #5
    Join Date
    Apr 2010
    Posts
    4

    Default

    Hola hernanthiebaut, muchas gracias por contestar, voy a realizar un pequeño recuento de la información que capturo y como realizo mis actividades actualmente.

    A partir del 20 y hasta el día 26 de cada mes, me llegan entre 38 y 43 correos con 3 archivos de extensión .txt y separadores de campos por espacios fijos, los cuales están nombrados con el código de la entidad que los envía, la denominación de cada archivo que es de 3 letras y la fecha, osea algo así "02afiDDMMAAAA.txt", por tal motivo la única forma de capturar masivamente estos archivos es por medio de su extensión ya que la fecha cambia todos los meses.

    Procedo a cargar cada archivo, según su denominación en una tabla de la bdd que esta en MySql, en este primer paso es donde tengo la necesidad de cargar masivamente los archivos por medio del ETL.

    Después del cargue le hago un procedimiento para identificar que datos se cruzan y de estos entrego una respuesta en un archivo plano de similares características.

    A este momento, ya puedo cargar todos los archivos a sus respectivas tablas con un solo inconveniente, en el paso de cargue me toca seleccionar el campo de no reportar errores, pero me encuentro con la casualidad que me quedan haciendo falta algo mas de 30.000 registros y no logro identificar los errores por los cuales no los carga.

    cuando tenga este procedimiento totalmente depurado, continuare con el paso de implementar a esta información todo el analisis de BI.

    Cordial saludo.

  6. #6
    Join Date
    Oct 2012
    Posts
    1

    Default

    Quote Originally Posted by hernanthiebaut View Post
    hola carlos buenas tardes, mira no se bien que es lo que queres hacer pero si queres cargar multiples archivos lo que yo te recomendaria es que levantes el nombre de los archivos o sea que vas a tener algo asi de 40 nombres, y pasas de a una a un job dentro de ese job seteas la variable del nombre del file y si puedes del nombre de la tabla (supongamos que en este caso es el mismo) entonces si tenes por ej: una lista de files cuyo nombre es tabla_1.txt, tabla_2.txt, ..... tabla_40.txt. haces lo siguiente


    job --> trasnformacion1
    --> obtienes los nombres de los archivos ( con tu comodin) --> copy rows to result
    job (enable execute for every row)
    --> transformacion1 --> get rows from previous result --> set variables
    --> transformation 2 --> text input --> table_output


    en text input pones ${name_variable} al igual que en table ouput en el nombre de la tabla (recordemos que dijimos que eran iguales) .


    Esto lo que deberia hacer es tomar el primer nombre del txt supongamos table_1.txt y se queda con table_1 lo pasa a la otra transformacion y setea el nombre cuando pasa a la otra transformacion toma el archivo de texto con el valor que tiene la variable ${name_variable} en ese momento que en este caso es table_1 y lo insertaria en la tabla table_1 de la base de datos, cuando termina pasa al segundo nombre de la lista ( en este caso table_2.txt) y vuelve a repetir el mismo proceso.
    Implementando esto no deberias tener problemas ni de performance ni de memoria para solo 5 millones de registros...
    saludos , espero que te sirva
    Hernan

    Hola Hernan


    Te escribo desde Bogota. Estoy tratando de implementar un proceso de carga de datos desde unos archivos de texto(.txt) son aproximadamente 40 archivos diarios. estoy tratando de implementar la solución que sugieres. Esto con el fin de cargar archivo por archivo y en caso de registrarse algún error en el proceso se guarde la linea y el nombre del archivo que presenta errores en una tabla de mi BD.


    El problema que tengo es que no entiendo muy bien estos pasos:


    job (enable execute for every row)
    --> transformacion1 --> get rows from previous result --> set variables
    --> transformation 2 --> text input --> table_output


    Lo que entiendo es que se realiza una transformación para traer el nombre de los archivos. Luego se pasa uno a uno los nombres de los archivos a otra transformación la cual se encarga de procesar los registros del archivo.


    Te agradecería enormemente una pequeña ayuda al respecto.




    Cordial Saludo


    Jhonatan Segura

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Privacy Policy | Legal Notices | Safe Harbor Privacy Policy

Copyright © 2005 - 2019 Hitachi Vantara Corporation. All Rights Reserved.