es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Comprueba si hay archivos en la carpeta de origen.

Estoy utilizando un paquete SSIS que elimina las filas de la tabla de SQL antes de importar. Antes de ejecutar cualquier tarea, quiero verificar si hay un archivo en la carpeta de origen. Si el archivo existe, ejecutaremos nuestras otras tareas SSIS. De lo contrario, podemos completar nuestro paquete sin ejecutar ninguna tarea.
Utilicé el enlace a continuación para configurar la tarea de script que verifica si el archivo existe en la carpeta de origen:
http://www.techbrothersit.com/2013/07/ssis-how-to-check-if-file-exists-in.html

El problema que tengo es que el nombre del archivo cambia todos los días, y este ejemplo solo funciona si usamos el mismo nombre de archivo todo el tiempo.
¿Hay alguna forma de hacer esto para verificar si existen archivos .xlsx en el directorio de origen?

¡Gracias de antemano!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera de verificar si existe algún archivo con extensión .xlsx en el directorio de origen. En lugar de especificar un nombre de archivo específico, puedes usar un comodín (*) en el parámetro del nombre de archivo de la tarea del sistema de archivos. Esto verificará si existe algún archivo con extensión .xlsx en el directorio especificado.

    Aquí tienes los pasos para modificar la tarea de script y verificar si hay algún archivo .xlsx en el directorio de origen:

    1. Haz doble clic en la tarea de script para abrir el editor de script.
    2. Elimina el código de script existente.
    3. Copia y pega el siguiente código de script:

    “`c#
    using System.IO;
    using System.Windows.Forms;
    using Microsoft.SqlServer.Dts.Runtime;

    namespace ST_2b6f2874a4fc4eb4b078cf39748c6e72.csproj
    {
    [System.AddIn.AddIn(“ScriptMain”, Version = “1.0”, Publisher = “”, Description = “”)]
    public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
    {
    enum ScriptResults
    {
    Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
    Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
    };

        public void Main()
        {
            // Obtén la ruta de la carpeta de origen de la variable del paquete
            string folderPath = (string)Dts.Variables["User::SourceFolder"].Value;
    
            // Verifica si existe algún archivo .xlsx en la carpeta de origen
            string[] files = Directory.GetFiles(folderPath, "*.xlsx");
            bool fileExists = (files.Length > 0);
    
            // Establece la variable del paquete para indicar si el archivo existe
            Dts.Variables["User::FileExists"].Value = fileExists;
    
            Dts.TaskResult = (int)ScriptResults.Success;
        }
    }
    

    }


    4. Guarda y cierra el editor de script. 5. Haz doble clic en la tarea del sistema de archivos que viene después de la tarea de script. 6. En el Editor de la tarea del sistema de archivos, ve a la pestaña de Expresiones. 7. Haz clic en el botón de puntos suspensivos junto a la propiedad de Origen. 8. En el Editor de Expresiones de Propiedades, haz clic en el botón de puntos suspensivos junto a la propiedad de Expresión. 9. En el Generador de Expresiones, utiliza la siguiente expresión para establecer la propiedad de Origen a la ruta del primer archivo .xlsx en la carpeta de origen:

    @[User::SourceFolder] + “\” + (System.IO.Directory.GetFiles(@[User::SourceFolder], “*.xlsx”))[0]
    “`

    1. Haz clic en OK para cerrar todas las ventanas de diálogo.
    2. Ejecuta el paquete. Si existe algún archivo .xlsx en la carpeta de origen, se ejecutará la tarea del sistema de archivos. De lo contrario, el paquete se completará sin ejecutar ninguna tarea.

Comments are closed.