none
Enviar Consulta SQL a un archivo txt y xml

    Question

  • Que tal.

    Quisiera ver si me pudieran orientar en mi siguiente necesida.

    Necesito que cada que el usuario genere una factura en mi sistema, en sql me genere un archivo txt y xml con el nombre de la factura generada (Factura 1.txt Factura1.xml, Factura 2.txt, Factura 2.xml etc) Solo que no se como hacer este proceso.

    Si me pueden ayudar con un manual o decirme como lo hago les agradeceria.

    Si necesitan mas informacion me dicen.

    De antemano les agradezco su tiempo.

     

     

    Thursday, May 12, 2011 4:41 PM

Answers

  • Hola.

    Entonces tendrías que optar por un job que regularmente revise la tabla y los nuevos registros que contiene para lanzar las exportaciones. No es lo más óptimo, pero un paquete de Integration Services podría servirte (que se lanzaría desde el job).

    En dicho paquete, podrías un bucle que realice la generación de los ficheros. Aquí tienes un tutorial que hace una cosa parecida, pero importando datos en lugar de exportarlos, pero es lo mismo o muy parecido. Realízalo y luego intenta adaptarlo a tu caso.

    http://msdn.microsoft.com/es-es/library/ms169917.aspx

    Otras opciones de generar estos ficheros son el uso de bcp para el texto plano o usar la sintaxis "for xml" para hacerlo desde T-SQL. Un ejemplo de esto último sería lo siguiente:

    select 'c:\test.xml' filename
      , (select name, (select name
             from sys.columns c where c.object_id = o.object_id
             for xml path('column'),type) columns
       from sys.objects o
       for xml path('object'), root('schema'), type) data
    

    Inténtalo. Si no lo logras, nos dices.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    Friday, May 13, 2011 5:17 AM
    Moderator
  • Ahora, si te da flojera exportar con el link indicado por qwalgrande, en el sql server management Studio, cuando seleccionas la base de datos y presionas el botón derecho hay una opción que dice exportart datos (export data)

    Ahi le das como datos de origen tu base de dato y como destino un archivo plano (flat file) que sería tu archivo txt.

     


    MVP MCT MCTS Daniel Calbimonte

    http://elpaladintecnologico.blogspot.com
    • Proposed as answer by dani671MVP Friday, May 13, 2011 3:23 PM
    • Marked as answer by HectorMty Friday, May 13, 2011 5:45 PM
    Friday, May 13, 2011 3:23 PM

All replies

  • Hola.

    Es una exportación simple, pero en la que tendrás que saber el formato a darle. Lo tocante a SQL Server consistirá en obtener la consulta que genere los datos, lo demás será mejor que lo hagas desde la programación (crear el fichero, ordenar cada cosa en su sitio, etc).

    Si estuviéramos hablando de generar un txt o un xml con todas las facturas, entonces un paquete de Integration Services te sería de utilidad. Pero al tratarse de una factura individual, creo que te será más económico hacerlo desde la aplicación que se ocupa de grabar las facturas. Siendo esta la situación, creo que un foro de desarrollo en el lenguaje que estés utilizando te vendrá mejor que este foro, dedicado a SQL Server.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    Thursday, May 12, 2011 7:10 PM
    Moderator
  • Te agradesco la respuesta, pero lo queria realizar desde SQL porque no tengo acceso a modificar la aplicacion.

     

    Si me pudieras decir como puedo hacer el archivo txt desde SQL te agradeceria.

     

    Saludos!

    Thursday, May 12, 2011 9:43 PM
  • Hola.

    Entonces tendrías que optar por un job que regularmente revise la tabla y los nuevos registros que contiene para lanzar las exportaciones. No es lo más óptimo, pero un paquete de Integration Services podría servirte (que se lanzaría desde el job).

    En dicho paquete, podrías un bucle que realice la generación de los ficheros. Aquí tienes un tutorial que hace una cosa parecida, pero importando datos en lugar de exportarlos, pero es lo mismo o muy parecido. Realízalo y luego intenta adaptarlo a tu caso.

    http://msdn.microsoft.com/es-es/library/ms169917.aspx

    Otras opciones de generar estos ficheros son el uso de bcp para el texto plano o usar la sintaxis "for xml" para hacerlo desde T-SQL. Un ejemplo de esto último sería lo siguiente:

    select 'c:\test.xml' filename
      , (select name, (select name
             from sys.columns c where c.object_id = o.object_id
             for xml path('column'),type) columns
       from sys.objects o
       for xml path('object'), root('schema'), type) data
    

    Inténtalo. Si no lo logras, nos dices.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    Friday, May 13, 2011 5:17 AM
    Moderator
  • Ahora, si te da flojera exportar con el link indicado por qwalgrande, en el sql server management Studio, cuando seleccionas la base de datos y presionas el botón derecho hay una opción que dice exportart datos (export data)

    Ahi le das como datos de origen tu base de dato y como destino un archivo plano (flat file) que sería tu archivo txt.

     


    MVP MCT MCTS Daniel Calbimonte

    http://elpaladintecnologico.blogspot.com
    • Proposed as answer by dani671MVP Friday, May 13, 2011 3:23 PM
    • Marked as answer by HectorMty Friday, May 13, 2011 5:45 PM
    Friday, May 13, 2011 3:23 PM