none
SSIS - Obtener nombre de archivo RRS feed

  • Pregunta

  • Hola a todos!

    Vengo con una consulta que he visto en varios lados, pero sin solucion (al menos hasta ahora!)

    Estoy usando un Foreach Loop en SSIS. Necesito leer varios archivos de una carpeta, y enviarlos a una BD. Lo que me esta faltando en este momento, es obtener el nombre del archivo. Si configuro el Foreach Loop como "Fully qualified" me funciona bien, pero el resultado que obtengo es la ruta completa del archivo (Ej: C:\Datos\archivo1.txt) Lo que necesito obtener es simplemente "archivo1". Esto es porque el nombre del archivo en realidad es el codigo de un negocio que debo guardar en mi tabla. Si el Foreach Loop lo pongo como "Name only" me tira error al ejecutar (me dice "Error al leer Archivo1: no se puede encontrar el archivo seleccionado) 

    Alguien me da una mano?

    Gracias!

    Saludos a todos!

    lunes, 5 de abril de 2021 14:35

Respuestas

  • En otras palabras: ¿Cómo hiciste para meterle la variable del bucle en la cadena de conexión del Flat File? Has tenido que hacer esto en algún momento, puesto que dijiste que conseguiste leer los archivos poniendo "Fully Qualified". Bueno, pues donde metiste esa variable puedes meter algo más complicado que una simple referencia a variable. Puedes meter una expresión completa.
    • Marcado como respuesta rlavisse martes, 6 de abril de 2021 20:07
    martes, 6 de abril de 2021 16:11

Todas las respuestas

  • Idea que se me ocurre:

    Primero, configura el Foreach para usar "Name only", y mapéalo a una variable.

    Después, cuando vayas a configurar el Flat File Manager para leer el archivo, me imagino que hasta ahora lo que has hecho es meter la variable directamente en el ConnectionString. Aquí es donde solo te funciona si trae el Fully qualified name, pero no con el NameOnly. Pues bien, llegados a este punto usa el editor de expresiones en las Advanced Properties cuando estés editando la cadena, y métele una expresión que concatene la carpeta con la variable que tiene el nombre del archivo. De esta manera, obtienes el Full Name y el File Manager consigue abrir el archivo. Y mientras tanto, en la variable tienes el Name Only y la puedes usar como código para la tabla.

    La otra alternativa sería usar el Fully Qualified para la variable, y entonces cuando la tengas que usar como código para la tabla meterla dentro de una expresión que separe el nombre del archivo, aunque quizá en este caso la expresión te quede un poco más complicada.


    lunes, 5 de abril de 2021 15:26
  • Hola,

    Gracias por levantar tu consulta en los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    lunes, 5 de abril de 2021 17:34
    Moderador
  • Muchas gracias Alberto. Estuve tratando, sin éxito por el momento. 

    No entiendo esta parte: "Pues bien, llegados a este punto usa el editor de expresiones en las Advanced Properties cuando estés editando la cadena, y métele una expresión que concatene la carpeta con la variable que tiene el nombre del archivo."

    martes, 6 de abril de 2021 13:31
  • En otras palabras: ¿Cómo hiciste para meterle la variable del bucle en la cadena de conexión del Flat File? Has tenido que hacer esto en algún momento, puesto que dijiste que conseguiste leer los archivos poniendo "Fully Qualified". Bueno, pues donde metiste esa variable puedes meter algo más complicado que una simple referencia a variable. Puedes meter una expresión completa.
    • Marcado como respuesta rlavisse martes, 6 de abril de 2021 20:07
    martes, 6 de abril de 2021 16:11