none
SSIS : CREAR UN ARCHIVO TXT RRS feed

  • Pregunta

  • Hola Buenas tardes, 

    Necesitaria crear un archivo txt o poder modificar uno y sobreescribirlo. 

    La idea es la siguiente : tengo un archivo que tiene una fecha , necesito ir cambiando a diario esa fecha con una variable .

    Supongamos que seria algo asi :

    "Hoy es : " + @variable_fecha

    y quedaria : Hoy es 13-02-2017 

    a ese resultado me gustaria guardarlo en un txt para luego hacer una ejecucion.

    Alguna idea?

    Muchas gracias!

    lunes, 13 de febrero de 2017 20:20

Respuestas

  • Algo así, observa: 

    1.- Crear una variable de la ruta del archivo, arrastras un objeto Script Task, y pasas la variable como Read/Write

    Dentro del script task, usas este codigo : 

    debes agregar el namespace: 

    using System.Text.RegularExpressions; 

    y esto

    // TODO: Add your code here
    
                string archivo = Dts.Variables["Ruta_Archivo"].Value.ToString();
                string cadena = "";
    
    
                System.IO.StreamReader sr = System.IO.File.OpenText(archivo);
                cadena = sr.ReadToEnd();
                sr.Close();
    
                cadena = Regex.Replace(cadena,
                    "(?<year>\\d{4})-(?<month>\\d{1,2})-(?<day>\\d{1,2})", DateTime.Now.ToString("yyyy-MM-dd"));
    
                MessageBox.Show(cadena);

    Con esto ya reemplaza la cadena de la fecha por la fecha actual y te la presenta en un Message Box, para guardarlo en un archivo te lo dejo que lo hagas ;)

    SALUDOS.


    SERGIO SANCHEZ ARIAS
    facebook twitter blogger google

    martes, 14 de febrero de 2017 20:21

Todas las respuestas

  • Create un fichero de texto, delimitado que solamente tenga un campo, luego úsalo como destino y sin tener porque tener un origen, puedes rellenar con una expresión derivada.

    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    martes, 14 de febrero de 2017 10:18
    Moderador
  • Hola que tal:

    Tengo algo en mi foro que tal vez te podría servir, si tienes dudas, te ayudamos.

    SSIS, GENERANDO ARCHIVOS CON NOMBRES DINAMICOS


    SERGIO SANCHEZ ARIAS
    facebook twitter blogger google

    martes, 14 de febrero de 2017 18:16
  • Hola Sergio, acabo de ver en tu foro pero lo que muestra es como generar el nombre del archivo.

    Yo lo que necesito es trabajar dentro del contenido del mismo.

    Muchas gracias igualmente!

    martes, 14 de febrero de 2017 18:26
  • Quieres obtener el contenido del archivo, trabajarlo y luego volver a escribir el archivo?

    Muestranos un ejemplo del contenido de tu archivo al inicio y después del proceso.


    SERGIO SANCHEZ ARIAS
    facebook twitter blogger google

    martes, 14 de febrero de 2017 18:49
  • Exacto !!! 

    por ejemplo tengo un txt llamado : archivo.txt con el siguiente contenido dentro del mismo  :

    payload = "{\r\n\t\"id\": 100031,\r\n\t\"filters\":[ \r\n\t\t\t{   \r\n\t\t        \"name\": \"Fecha Creacion\",          \r\n\t\t        \"values\":\"2017-01-23\"\r\n\t        }           \r\n\t ]\r\n}"

    lo que quiero es utilizar una fecha como variable para poder generar o pisar el mismo txt con una fecha actualizada en cada ejecucion - Quedaria de la siguiente forma si lo ejecutara hoy: 

    payload = "{\r\n\t\"id\": 100031,\r\n\t\"filters\":[ \r\n\t\t\t{   \r\n\t\t        \"name\": \"Fecha Creacion\",          \r\n\t\t        \"values\":\"2017-02-14\"\r\n\t        }           \r\n\t ]\r\n}"

    Gracias!

    martes, 14 de febrero de 2017 18:58
  • Creo que tu archivo solo contiene una linea cierto

    Lo que se me ocurre, es que leas el archivo como si fuera una sola columna, lo metas en una variable y lo trabajes en un script y con expresiones regulares busques esa cadena con formato de fecha y la reemplaces con la fecha actual, y luego sobre escribas el contenido del archivo.

    La segunda opción y creo que es la más fácil dado que es solo una linea en el archivo, es que lo abras directamente usando un Script Task, leas la linea, busques la cadena con expresiones regulares y sobreescribas el contenido del archivo con la nueva cadena...

    Intentaré hacerte un ejemplo y te lo explico con imagenes.


    SERGIO SANCHEZ ARIAS
    facebook twitter blogger google

    martes, 14 de febrero de 2017 19:16
  • Algo así, observa: 

    1.- Crear una variable de la ruta del archivo, arrastras un objeto Script Task, y pasas la variable como Read/Write

    Dentro del script task, usas este codigo : 

    debes agregar el namespace: 

    using System.Text.RegularExpressions; 

    y esto

    // TODO: Add your code here
    
                string archivo = Dts.Variables["Ruta_Archivo"].Value.ToString();
                string cadena = "";
    
    
                System.IO.StreamReader sr = System.IO.File.OpenText(archivo);
                cadena = sr.ReadToEnd();
                sr.Close();
    
                cadena = Regex.Replace(cadena,
                    "(?<year>\\d{4})-(?<month>\\d{1,2})-(?<day>\\d{1,2})", DateTime.Now.ToString("yyyy-MM-dd"));
    
                MessageBox.Show(cadena);

    Con esto ya reemplaza la cadena de la fecha por la fecha actual y te la presenta en un Message Box, para guardarlo en un archivo te lo dejo que lo hagas ;)

    SALUDOS.


    SERGIO SANCHEZ ARIAS
    facebook twitter blogger google

    martes, 14 de febrero de 2017 20:21