Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
azure SQL Database
XML Bulk Load zpracovává sql :mapped anotaci v XSD schématu podle očekávání – tedy pokud mapovací schéma specifikuje sql:mapped="false" pro jakýkoli prvek nebo atribut, XML Bulk Load se nesnaží uložit příslušná data do příslušného sloupce.
XML Bulk Load ignoruje prvky a atributy, které nejsou mapovány (buď proto, že nejsou popsány ve schématu, nebo protože jsou anotovány ve schématu XSD pomocí sql:mapped="false"). Všechna nemapovaná data jdou do sloupce přetečení, pokud je takový sloupec specifikován pomocí sql:overflow-field.
Představte si například toto schéma XSD:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="ROOT" sql:is-constant="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Customers" sql:relation="Cust"
sql:overflow-field="OverflowColumn" >
<xsd:complexType>
<xsd:attribute name="CustomerID" type="xsd:integer" />
<xsd:attribute name="CompanyName" type="xsd:string" />
<xsd:attribute name="City" type="xsd:string" />
<xsd:attribute name="HomePhone" type="xsd:string"
sql:mapped="false" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Protože atribut HomePhone specifikuje sql:mapped="false", XML Bulk Load tento atribut nemapuje na odpovídající sloupec. Schéma XSD identifikuje sloupec přetečení (OverflowColumn), do kterého XML Bulk Load ukládá tato nevyužitá data.
Pro testování pracovního vzorku
Vytvořte následující tabulku v databázi tempdb :
USE tempdb CREATE TABLE Cust (CustomerID int PRIMARY KEY, CompanyName varchar(20) NOT NULL, City varchar(20) DEFAULT 'Seattle', OverflowColumn nvarchar(200)) GOUložte schéma uvedené v tomto příkladu jako SampleSchema.xml.
Uložte následující ukázková XML data jako SampleXMLData.xml:
<ROOT> <Customers CustomerID="1111" CompanyName="Sean Chai" City="NY" HomePhone="111-1111" /> <Customers CustomerID="1112" CompanyName="Dont Know" City="LA" HomePhone="222-2222" /> </ROOT>Pro spuštění XML Bulk Load uložte a spustěte tento příklad Microsoft Visual Basic Scripting Edition (VBScript) jako Sample.vbs:
set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkload.4.0") objBL.ConnectionString = "provider=SQLOLEDB;data source=localhost;database=tempdb;integrated security=SSPI" objBL.ErrorLogFile = "c:\error.log" objBL.CheckConstraints=True objBL.Execute "c:\SampleSchema.xml", "c:\SampleXMLData.xml" set objBL=Nothing
Toto je ekvivalentní schéma XDR:
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:sql="urn:schemas-microsoft-com:xml-sql" >
<ElementType name="ROOT" sql:is-constant="1">
<element type="Customers" />
</ElementType>
<ElementType name="Customers" sql:relation="Cust"
sql:overflow-field="OverflowColumn" >
<AttributeType name="CustomerID" />
<AttributeType name="CompanyName" />
<AttributeType name="City" />
<AttributeType name="HomePhone" />
<attribute type="CustomerID" />
<attribute type="CompanyName" />
<attribute type="City" />
<attribute type="HomePhone" sql:map-field="0" />
</ElementType>
</Schema>