SSIS - SQL Server Integration Services - tomar via ftp archivos variables

 
Vista:

tomar via ftp archivos variables

Publicado por kinetic_brain (7 intervenciones) el 08/03/2011 20:43:14
Estimados:

Como puedo tomar archivos variables desde otra maquina, por ejemplo necesito tomar un archivo txt con la fecha de ayer, que sería el archivo mas reciente en la carpeta.

que objeto necesito utilizar en BI y como parametrizarlo, por favor.

saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Obtener archivo más reciente desde otra máquina

Publicado por Alejandro (60 intervenciones) el 23/02/2024 18:00:50
Kinetic_brain, Para tomar archivos variables desde otra máquina en un entorno de Business Intelligence (BI), puedes utilizar la tarea "Script Task" en SQL Server Integration Services (SSIS) para lograr esto. A continuación, te proporcionaré un ejemplo de cómo puedes hacerlo:

1. Agregar la tarea "Script Task" a tu paquete SSIS:
- Abre tu paquete SSIS en SQL Server Data Tools.
- Agrega una tarea "Script Task" a tu flujo de control.

2. Configurar la tarea "Script Task":
- Haz doble clic en la tarea "Script Task" para abrir el Editor de Script Task.
- En la pestaña "Script", selecciona el lenguaje de programación (por ejemplo, C#) y elige la opción "PreCompileScriptIntoBinaryCode" si lo prefieres.

3. Escribir el código del script:
- Utiliza el siguiente código de ejemplo en el script. Este código utiliza C# y la clase `DirectoryInfo` para obtener el archivo más reciente en una carpeta en otra máquina.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System;
using System.IO;
using Microsoft.SqlServer.Dts.Runtime;
 
public class ScriptMain : UserComponent
{
    public void Main()
    {
        try
        {
            // Especifica la ruta de la carpeta en la máquina remota
            string rutaCarpetaRemota = @"\\NombreDeLaMaquina\NombreDeLaCarpeta";
 
            // Obtiene la información de la carpeta
            DirectoryInfo directorio = new DirectoryInfo(rutaCarpetaRemota);
 
            // Obtiene el archivo más reciente
            FileInfo archivoMasReciente = directorio.GetFiles()
                                                  .OrderByDescending(f => f.LastWriteTime)
                                                  .FirstOrDefault();
 
            if (archivoMasReciente != null)
            {
                // Aquí puedes usar el archivoMasReciente según tus necesidades
                string nombreArchivo = archivoMasReciente.Name;
 
                // Puedes almacenar el nombre del archivo en una variable de SSIS
                Dts.Variables["User::NombreArchivo"].Value = nombreArchivo;
 
                Dts.TaskResult = (int)ScriptResults.Success;
            }
            else
            {
                // Manejar el caso donde no se encontraron archivos
                Dts.TaskResult = (int)ScriptResults.Failure;
            }
        }
        catch (Exception ex)
        {
            // Manejar errores
            Dts.Events.FireError(0, "Script Task", ex.Message, string.Empty, 0);
            Dts.TaskResult = (int)ScriptResults.Failure;
        }
    }
}

4. Configurar variable de SSIS:
- Antes de ejecutar el paquete, asegúrate de tener una variable en tu paquete SSIS para almacenar el nombre del archivo. En este ejemplo, se usa una variable llamada `User::NombreArchivo`.

5. Parametrizar el paquete SSIS:
- Puedes parametrizar la ruta de la carpeta remota utilizando variables o configuraciones del paquete, según tus necesidades.

Este código obtendrá el archivo más reciente en la carpeta especificada en otra máquina y almacenará el nombre del archivo en una variable de SSIS para su uso posterior en el flujo de control del paquete. Asegúrate de ajustar las rutas y nombres de las variables según tu entorno específico.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar