He encontrado un problema que necesito importar un enorme XML (> 1 Gb) en SQL Server 2008 diariamente. Lo que tengo ahora es un archivo XML de muestra y el esquema XML del mismo. El esquema XML es bastante complejo que contiene muchas personalizado definido tipo simple, y el elemento de tipo complejo, tales como:Importar datos XML enormes (> 1 Gb) en SQL Server 2008 diariamente
<xs:element name="xxxx_url">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:anyURI">
<xs:attribute ref="target" use="optional"/>
<xs:attribute ref="abc" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
Después de la importación, un servicio WCF se llevará a cabo para recuperar los datos almacenados en SQL Sever, algo así como la búsqueda , recuperar etc. (operaciones de solo lectura).
Los pasos de implementación que se me ocurren son como:
- Definir un modelo de objetos de acuerdo con el XSD proporcionado (manualmente), el modelo de objetos se utiliza para el servicio WCF para devolver valores.
- Defina un esquema de base de datos del XSD proporcionado (manualmente), se estima que el esquema tiene aproximadamente de 20 a 30 tablas.
- Crea un paquete SSIS para cargar XML en la base de datos diariamente.
- Crea un servicio WCF que lee de la base de datos, rellena datos en el modelo de objetos definido en el paso 1 y devuelve el objeto al cliente de servicio.
El problema es que estos pasos implican mucho trabajo manual. Tengo que investigar el XSD fila por fila, y transformarlo en modelo de objeto y esquema de la base de datos mannualy.
Investigué que hay algunas herramientas de automatización para transformar XSD en clases, y también transformar XSD en el esquema de la base de datos. Pero las clases transformadas de XSD con la herramienta están bastante desordenadas, y la transformación a esquema falla porque no se ajusta al formato de conjunto de datos de MS.
Me pregunto si hay alguna buena solución a este problema, para ahorrar un montón de trabajo manual?
¡Cualquier sugerencia es apreciada!
Si el rendimiento/el uso de la memoria son importantes, consulte vtd-xml. –