none
Exportar consulta a un fichero RRS feed

  • Pregunta

  • Hola a todos,

         necesito remplazar una función clr que exporta el resultado de un query pasado como parámetro a un fichero de texto (no necesariamente un csv). La función actual tiene varias opciones, entre ellas enviar o no el encabezado con los nombres de las columnas, crear un fichero nuevo o agregarlo a uno existente, etc.

          Por lo que estuve investigando las opciones pueden ser bcp o sqlcmd. La primera no tiene la opción de generar el encabezado (o no vi cómo hacerlo) mientras que en la segunda el encabezado se genera pero debajo de él genera también una línea con ------. Esto no es una opción válida y sé que el cliente se quejará. 

          Se les ocurre alguna otra forma de hacer lo que necesito?

          Muchas gracias desde ya.

    Mauricio


    Mauricio - Copenhague - Dinamarca

    jueves, 6 de agosto de 2015 12:08

Respuestas

  • Finalmente logré resolverlo con sqlcmd y commandos como findstr para eliminar las líneas indeseadas en el encabezado.

    Gracias a todos por las respuestas.

    Saludos.


    Mauricio - Copenhague - Dinamarca

    lunes, 10 de agosto de 2015 9:09

Todas las respuestas

  • Hola Mauricio, puede hacerlo del siguiente modo, te colocas sobre la base de datos, boton derecho-->Exportar datos, eliges la BD de Origen y en Destino, puedes elegir fichero de texto plano, excell, access, para el caso de fichero plano, hay un check que pone: Nombre de la columna de la primera fila de dato, que lo que hace es incluir las cabeceras. Lo que estamos haciendo aquí es generar un paquete que lo podemos guardar. Ahora bien, si quieres que esto se genere cada cierto tiempo, puedes crearte un JOB y vincularlo con el paquete.

    Espero te sirva, ya nos cuentas.

    Un saludo.


    Solo unos pocos marcan las diferencias. Tu mismo.

    jueves, 6 de agosto de 2015 12:43
  • Hola,

         no, eso no es una solución válida para mi caso. Lo que estoy buscando es una forma de poder exportar el resultado de queries que se llaman a través de jobs ya que son listados generados cada cierto intervalo de tiempo y sin intervención del usuario. 

          Gracias de todas maneras por tu respuesta. 


    Mauricio - Copenhague - Dinamarca

    jueves, 6 de agosto de 2015 12:46
  • Si no he entendido mal,

    Puedes generar el paquete mediante una query, en lugar del job, y en el job le asignas el paquete. 



    Solo unos pocos marcan las diferencias. Tu mismo.

    jueves, 6 de agosto de 2015 12:53
  • No, creo que no me estoy explicando correctamente. Diariamente se generan muchos reportes a través de consultas que son subidos a un ftp. Hoy usamos la función clr_ExportarQuery pero queremos remplazarla por un procedimiento almacenado que reciba el query como parámetro, junto a otros más como si necesita o no el encabezado, el separador de columnas, el nombre del fichero generado, etc. No es algo fijo sino que depende de los parámetros, el nombre del fichero es variable, por ejemplo.

    Mauricio - Copenhague - Dinamarca

    jueves, 6 de agosto de 2015 12:58
  • utilizando BCP, y generando un XML, no te sirve? en el XML se encuentran las etiquetas de las columnas.

    Un saludo.


    Solo unos pocos marcan las diferencias. Tu mismo.

    jueves, 6 de agosto de 2015 13:12
  • Normalmente la salida es un fichero de texto, por ejemplo:

    MSISDN|STARTDATE|ACTIVATIONTYPE|DONORNRN|DONOROPERATOR|CHANNEL
    34555469999|2015-06-20 10:46:02|N|||televenta

    En este caso se muestra el encabezado y el separador de columnas es |. 


    Mauricio - Copenhague - Dinamarca

    jueves, 6 de agosto de 2015 13:15
  • Hazlo desde C# con el CLR, ahí tienes la facilidad de dar formato, y dejarlo en archivo en donde desees, y lo puedes invocar desde un job o desde un stored procedure

    https://msdn.microsoft.com/es-es/library/ms254498(v=vs.110).aspx

    y bueno en la lógica incluso podrías hacer eso que quieres pasar como parámetro el stored procedure del cual sacara la información.


    Ing. Carlos Monroy MCP, MCAD, MCSD, MCTS

    jueves, 6 de agosto de 2015 13:54
  • Es que precisamente lo que queremos evitar es el uso de funciones clr_, actualmente tengo una que ya hace eso, de ahí la razón de este post. 

    Mauricio - Copenhague - Dinamarca

    jueves, 6 de agosto de 2015 13:56
  • Finalmente logré resolverlo con sqlcmd y commandos como findstr para eliminar las líneas indeseadas en el encabezado.

    Gracias a todos por las respuestas.

    Saludos.


    Mauricio - Copenhague - Dinamarca

    lunes, 10 de agosto de 2015 9:09