Was ist der beste Weg, XML-Daten in SQL Server zu speichern?
-
22-08-2019 - |
Frage
Gibt es einen direkten Weg, der ziemlich geradlinig ist? (Das heißt kann SQL Server lesen XML)
Oder ist es am besten, die XML zu analysieren und überträgt sie nur in der üblichen Weise über ADO.Net entweder als einzelne Zeilen oder vielleicht eine Batch-Update?
ich es realisieren Lösungen sein, die große Anlage gespeichert Procs beinhalten - während ich dies nicht ganz entgegengesetzte bin, neigen dazu, ziehe ich die meisten meiner Business-Logik in der C # -Code zu haben. Ich habe eine Lösung mit SQLXMLBulkLoad gesehen, aber es schien ziemlich komplexen SQL-Code zu verlangen.
Als Referenz werde ich mit etwa 100 Zeilen gleichzeitig mit etwa 50 kleinen Stücken von Daten für jeden (Strings und Ints) arbeiten. Dies wird schließlich ein täglicher Batch-Job worden.
Jeder Code-Schnipsel können Sie bieten sehr geschätzt werden würde.
Lösung
SQL Server 2005 oder höher hat einen Datentyp "XML", die Sie XML in speichern können -. Untypisierten oder getippte mit einem XSD-Schema
Sie können grundsätzlich Spalten vom Typ XML aus einer XML-Zeichenkette füllen, so können Sie ganz einfach nur eine normale INSERT-Anweisung verwenden und die XML-Inhalte in das Feld füllen.
Marc
Andere Tipps
Sie können die Funktion OPENXML verwenden und gespeicherte Prozedur sp_xml_preparedocument die einfache Verwaltung Ihrer XML in Rowsets umwandeln.
Wenn Sie SQL Server verwenden 2008 (oder 2005), es verfügt über einen xml
nativen Datentyp. Sie können ein XSD-Schema mit xml
Variablen verknüpfen und direkt in Spalten vom Typ xml
ein.
Ja, SQL Server 2005 und höher können XML aus der Box analysieren.
Mit den Knoten, den Wert und Abfragemethoden, um sie aufzubrechen, wie Sie wollen, ob Werte oder Attribute
Einige schamlos Plugging:
XML-Daten und XML-Dokument könnten unterschiedliche Bedeutung haben. Wenn XML-Typ für Daten gut ist, ist es nicht (weiß Leerzeichen entfernt) speichert Formatierung, so dass in einigen Fällen (z cofiguration-Dateien) die beste Option nvarchar ist.