Ich weiß, dass dies ein altes Thema ist, aber es war wirklich hilfreich für mich zu wissen, wie es gemacht werden kann. Vielleicht ist es auch für andere hilfreich.
Weitere fortgeschrittene Beispiele sind auf der Microsoft-Seite zu finden.
Es ist also möglich, manuell eine SQL-Tabelle aus einer XSD zu erstellen. Zum Beispiel haben wir die folgende Xml:
<?xml version="1.0" encoding="UTF-8"?>
<foo>
<row>
<CAR_NUM>624</CAR_NUM>
<CAR_ORDER>1</CAR_ORDER>
</row>
<row>
<CAR_NUM>623</CAR_NUM>
<CAR_ORDER>2</CAR_ORDER>
</row>
<row>
<CAR_NUM>681</CAR_NUM>
<CAR_ORDER>3</CAR_ORDER>
</row>
<row>
<CAR_NUM>625</CAR_NUM>
<CAR_ORDER>4</CAR_ORDER>
</row>
<row>
<CAR_NUM>680</CAR_NUM>
<CAR_ORDER>5</CAR_ORDER>
</row>
</foo>
Unsere XSD wird also wie folgt aussehen:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="row" sql:relation="CAR"
sql:key-fields="CAR_NUM">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CAR_NUM" type="xsd:integer" />
<xsd:element name="CAR_ORDER" type="xsd:integer" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Die SQL-Tabelle sieht dann wie folgt aus:
CREATE TABLE CAR (
CAR_NUM INT ,
CAR_ORDER INT
GO
Und dann können Sie Interop.SQLXMLBULKLOADLib
Bibliothek, um Daten in SQLServer zu laden:
try
{
var xmlFileName = @".your address here..\GetInformReplyEdited.xml";
var xsdScheme = @".your address here..\scheme.xsd";
var connString = "Provider=sqloledb;server=yourServer;database=Test;integrated security=SSPI";
SQLXMLBULKLOADLib.SQLXMLBulkLoad4Class objBL = new SQLXMLBULKLOADLib.SQLXMLBulkLoad4Class
{
ConnectionString = connString,
ErrorLogFile = "error.xml",
KeepIdentity = false
};
objBL.Execute(xsdScheme, xmlFileName);
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}