2010-12-10 3 views
0

Hallo Ich habe ein ziemlich komplexes Schema (. XSD) und eine XML-Dateien. Einige Knoten haben ungefähr 70 Attribute und einige 10-15. Ich habe xsd2code verwendet, um C# -Klassen zu erstellen und dann meine XML-Datei deserialisiert. Ich erstellte eine Datenbank basierend auf meiner .xsd-Klasse mit xsd2db-Anwendung. Also ich habe meine XML-Datei gelesen und muss sie in der Datenbank speichern. Ich habe 74 Klassen/Tabellen mit primären/fremden Schlüsselbeziehungen. Ich habe SqlBulkCopy untersucht - dafür sieht es so aus, als müsste ich alles in Datatables/Zeilen/Spalten umwandeln. Und ich muss die Hierarchie berücksichtigen, um Fremdschlüssel zu erfüllen. Gibt es einen anderen Weg, es zu tun? Was wäre der beste (schnellste) Ansatz? Danke JennyMüssen mehrere SQL-Server-Tabellen aus C# App laden

Antwort

0

Es gibt verschiedene Möglichkeiten, um eine XML-Datei entweder durch T-SQL, SSIS, VB Script, usw.

Leider nur Google und Post Links zu importieren, aber ich denke, SQL-Eichhörnchen gefunden die einfachste Methode, eine XML-Datei in SQL Server 2005 für immer ist T-SQL zu verwenden:

http://www.lockergnome.com/sqlsquirrel/2008/05/22/how-to-import-a-xml-file-into-sql-server-2005/

http://www.lockergnome.com/sqlsquirrel/2008/05/23/how-to-turn-imported-xml-into-a-relational-format-in-sql-server-2005/

die SQLTeam scheinen zu denken, T-SQL ist auch die WTG: http://weblogs.sqlteam.com/mladenp/archive/2007/06/18/60235.aspx

+0

Vielen Dank Jeremy. Ich habe versucht, SSIS. Zuerst dachte ich, es wäre der beste Weg, es zu tun. Wenn ich nicht anders kann, gehe ich mit SSIS. Aber es erforderte, dass meine db- und xml-Dateien auf demselben Server waren und fast alle Datentypen nicht übereinstimmten. Daher muss ich Datentypen für 15-70 Spalten in jeder der 74 Tabellen konvertieren. Ich fand – Boroda

+0

Ich fand SQLXML Bulk Load - das scheint wie eine gute Lösung zu http://msdn.microsoft.com/en-us/library/ms171878.aspx mit der Ausnahme, dass ich nicht über Microsoft SQLXML Bulkload 4.0 Type Library (xblkld4 .dll) - und es muss separat installiert werden (SQLXML aktiviert XML-Unterstützung für SQL Server-Datenbank) und es ist keine Option für mich. – Boroda

+0

@Boroda Hier ist ein Beitrag, um Ihnen zu helfen, SQLXML (xblkld4.dll) http://social.msdn.microsoft.com/Forums/en/sqlxml/thread/f974763f-b189-456d-8b9a-6100d46cae15 zu finden. SQLXML Bulkload sieht beim Importieren von XML-Dateien weit über den Anfang hinaus, besonders wenn es einmal aus ist: http://msdn.microsoft.com/en-us/library/ms171806.aspx. Ich persönlich würde lieber eine Kombination von FROM OPENROWSET (BULK '' + @xmlFileName + '' ', SINGLE_BLOB) als XMLDATA verwenden und die Daten mit SQL, LINQ-to-XML und SQLSMO (SQL-Mgt-Objekte) massieren. Ist das ein einmaliger Vorgang? und welche Version von SQL Server haben Sie? –

Verwandte Themen