none
xml prepardo para insertar en bd. RRS feed

  • Pregunta

  • hola foro 

    Tengo la sgte inquietud:

    Tengo varios archivos xml  distintos , necesito generar por cada uno un archivo separado por coma o csv,
     con la idea de que tenga un formato para  que despues sea facil poner en un script de insert a una tabla en la bd 

    yo pense en crear una clase pero como son n xml serian n clases.
    Pense en crear unexpondoobject a partir de lo que voy leyendo del xml,  despues manejar ese objeto,pero no se si es factible. Capaz si paso a csv separado por coma es mas facil para cdo vaya  a la bd  que me recomendarian? 

    un ejemplo de un archivo xml

    <Provincias><Provincia><ID>1</ID><CP>00</CP><Nombre>cordoba.</Nombre></Provincia>......

    ......................

    </Provincias>

    Gracias desde ya



    miércoles, 11 de marzo de 2015 17:09

Respuestas

  • hola

    >>yo pense en crear una clase pero como son n xml serian n clases.

    pero si tienes n formatos de xml distintos entonces vas a necesitar n cantidad de clases o n cantidad de tecnicas para leer las estructuras de estos xml

    salvo que uses xslt que es el lenguaje de transformaicon de xml y adaptes todos los formatos de xml a un formato unico que puedas usar para trabajar la informacion, con xslt adaptas los xml a un solo formato

    >>Capaz si paso a csv separado por coma es mas facil para cdo vaya  a la bd  que me recomendarian?

    pero para lograr esto tambien tendrias que poder intepretar la estructura distinta que tenga cada xml

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta sebastian viga miércoles, 11 de marzo de 2015 18:50
    miércoles, 11 de marzo de 2015 18:03
  • Estimado sebastian viga

    Como te comenta Leandro, si puedes unificar los XML o transformarlos con XSLT a un formato comun, pero alli tendrias que codificar el XSLT y alli no te recomiendo (son archivos de "del diablo") jeje... es mas facil crear las clases y hacerlo por codigo que estar aprendiendo y codificando en XSLT (y mantenerlo y debugearlo)

    Asi que mi recomendación "alejate" (ahora que puedes) de XSLT (y bueno no puedes de XML jeje) pero bueno es poderoso... muy poderoso pero es otra cosa que debes mantener

    Y como hacemos? o como lo podriamos hacer? OPCIONES... 

    • OPCION 1: (Recomendada) Utilizar SQL Server Integration Services (SSIS)
      Ya que lo que tienes que hacer es "batch sobre sql",  puedes (o pueden utilizar donde trabajan" Integration Service que es muy buena herramienta, y para estas cosas "cotidianas" de importacion nos sirven y se mapean rapidisimo y tiene por supuesto "para leer esos archivos del diablo XML je"
      Espero que tenas SQL Server (no especificas) ... pero me parece mejor que estar con XSLT y es mas facil
      Puedes preguntar a alguien de DB que sepa manejar esto... y si no lo saben (se estan perdiendo una herramienta formdidable) si mal no recuerdo viene en las versiones express (con Advanced Services Features)
      Dale una mirada
      Ejemplo (debe haber varios por los buscadores o ayuda)
      http://blogs.msdn.com/b/mattm/archive/2007/12/11/using-xml-source.aspx

    • OPCION 2: Hay que ver ver si te conviene hacer algo generico en codigo C#
      Esto pensando en "voz alta", pero si los XML son sencillos Item o Entidad con algunos parametros tambien podrias hacer algo para parsear al algo dinamico ... va digo! mas facil que estar mapeando XSLT
      Algo asi (espero que te sirva el ejemplo)
      https://www.captechconsulting.com/blog/kevin-hazzard/fluent-xml-parsing-using-cs-dynamic-type-part-1

    Bueno... por lo pronto dos alternativas mas. 
    PERO dale una mirada a Integration Services, no vas a querer programar mas tus "mapeos" a la DB (importacion y manipulacion de datos) ... ademas se integra estos paquetes para ejecutarlos desde nuestro codigo .NET

    Espero que te sirva de ayuda o guia


    Jose. A Fernandez | blog: http://geeks.ms/blogs/fernandezja

    • Marcado como respuesta sebastian viga miércoles, 11 de marzo de 2015 22:16
    miércoles, 11 de marzo de 2015 19:30

Todas las respuestas

  • hola

    >>yo pense en crear una clase pero como son n xml serian n clases.

    pero si tienes n formatos de xml distintos entonces vas a necesitar n cantidad de clases o n cantidad de tecnicas para leer las estructuras de estos xml

    salvo que uses xslt que es el lenguaje de transformaicon de xml y adaptes todos los formatos de xml a un formato unico que puedas usar para trabajar la informacion, con xslt adaptas los xml a un solo formato

    >>Capaz si paso a csv separado por coma es mas facil para cdo vaya  a la bd  que me recomendarian?

    pero para lograr esto tambien tendrias que poder intepretar la estructura distinta que tenga cada xml

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta sebastian viga miércoles, 11 de marzo de 2015 18:50
    miércoles, 11 de marzo de 2015 18:03
  • Estimado sebastian viga

    Como te comenta Leandro, si puedes unificar los XML o transformarlos con XSLT a un formato comun, pero alli tendrias que codificar el XSLT y alli no te recomiendo (son archivos de "del diablo") jeje... es mas facil crear las clases y hacerlo por codigo que estar aprendiendo y codificando en XSLT (y mantenerlo y debugearlo)

    Asi que mi recomendación "alejate" (ahora que puedes) de XSLT (y bueno no puedes de XML jeje) pero bueno es poderoso... muy poderoso pero es otra cosa que debes mantener

    Y como hacemos? o como lo podriamos hacer? OPCIONES... 

    • OPCION 1: (Recomendada) Utilizar SQL Server Integration Services (SSIS)
      Ya que lo que tienes que hacer es "batch sobre sql",  puedes (o pueden utilizar donde trabajan" Integration Service que es muy buena herramienta, y para estas cosas "cotidianas" de importacion nos sirven y se mapean rapidisimo y tiene por supuesto "para leer esos archivos del diablo XML je"
      Espero que tenas SQL Server (no especificas) ... pero me parece mejor que estar con XSLT y es mas facil
      Puedes preguntar a alguien de DB que sepa manejar esto... y si no lo saben (se estan perdiendo una herramienta formdidable) si mal no recuerdo viene en las versiones express (con Advanced Services Features)
      Dale una mirada
      Ejemplo (debe haber varios por los buscadores o ayuda)
      http://blogs.msdn.com/b/mattm/archive/2007/12/11/using-xml-source.aspx

    • OPCION 2: Hay que ver ver si te conviene hacer algo generico en codigo C#
      Esto pensando en "voz alta", pero si los XML son sencillos Item o Entidad con algunos parametros tambien podrias hacer algo para parsear al algo dinamico ... va digo! mas facil que estar mapeando XSLT
      Algo asi (espero que te sirva el ejemplo)
      https://www.captechconsulting.com/blog/kevin-hazzard/fluent-xml-parsing-using-cs-dynamic-type-part-1

    Bueno... por lo pronto dos alternativas mas. 
    PERO dale una mirada a Integration Services, no vas a querer programar mas tus "mapeos" a la DB (importacion y manipulacion de datos) ... ademas se integra estos paquetes para ejecutarlos desde nuestro codigo .NET

    Espero que te sirva de ayuda o guia


    Jose. A Fernandez | blog: http://geeks.ms/blogs/fernandezja

    • Marcado como respuesta sebastian viga miércoles, 11 de marzo de 2015 22:16
    miércoles, 11 de marzo de 2015 19:30
  • Gracias jose , muy buena data y mucha tambien, ahora lo miro y lo analizo bien. tengo muchos data a procesar 

    vos y leandro son unos genios 
    miércoles, 11 de marzo de 2015 19:37