2009-04-01 16 views
8

¿Hay una ruta directa que sea bastante sencilla? (es decir, SQL Server puede leer XML)¿Cuál es la mejor manera de guardar datos XML en SQL Server?

O, ¿es mejor analizar el XML y simplemente transferirlo de la forma habitual a través de ADO.Net ya sea como filas individuales o quizás como una actualización por lotes?

que se dan cuenta de que puede haber soluciones que implican grandes complejos procedimientos almacenados - mientras no me opongo totalmente a esto, tiendo a preferir tener la mayor parte de mi lógica de negocio en el código C#. He visto una solución usando SQLXMLBulkLoad, pero parecía requerir código SQL bastante complejo.

Para referencia, estaré trabajando con cerca de 100 filas a la vez con alrededor de 50 pequeños trozos de datos para cada uno (cuerdas y ints). Esto eventualmente se convertirá en un trabajo por lotes diario.

Cualquier fragmentos de código que puede proporcionar sería muy apreciada.

+0

¿qué versión del servidor sql? –

+0

Principalmente estoy en SQL Server 2005, aunque tengo acceso a 2008. – alchemical

Respuesta

10

SQL Server 2005 y hasta tienen un tipo de datos llamado "XML" que se puede almacenar en XML - sin tipo o mecanografiado con un esquema XSD.

Básicamente puede llenar columnas de tipo XML desde una cadena literal XML, por lo que puede simplemente usar una instrucción INSERT normal y llenar el contenido XML en ese campo.

Marc

+0

Una vez que uso esto para obtener el cml en el servidor SQL, ¿el servidor SQL de alguna manera analizará el XML en campos? ¿O debo hacer esto manualmente en un proceso o una tabla? – alchemical

+0

No, está almacenado como un campo XML; puede consultarlo usando XPath y XQuery. ¿Que es exactamente lo que está buscando? –

4

Usted puede utilizar la función OPENXML y almacenados sp_xml_preparedocument procedimiento para convertir fácilmente su XML en conjuntos de filas.

+0

¡Nunca use sp_xml_preparedocument desde SQL Server 2005! – gbn

+0

¿por qué no? Hay un reemplazo? – alchemical

2

Si está utilizando SQL Server 2008 (o 2005), que tiene un tipo de datos xml nativa. Puede asociar un esquema XSD con variables xml, e Insertar directamente en columnas de tipo xml.

2

Sí, SQL Server 2005 y posteriores pueden analizar XML fuera de la caja.

utiliza el linfáticos, los métodos de valor y de consulta para descomponerlo forma en que desea, si los valores o atributos

Algunos taponamiento descarada:

0

Los datos Xml y el documento Xml podrían tener un significado diferente. Cuando el tipo de xml es bueno para los datos, no guarda el formato (se eliminan los espacios en blanco), por lo que en algunos casos (por ejemplo, archivos de cofiguración) la mejor opción es nvarchar.

Cuestiones relacionadas