Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le chargement en masse XML traite l’annotation sql:mapped dans le schéma XSD comme prévu, c’est-à-dire si le schéma de mappage spécifie pour un élément ou un attribut, XML Bulk Load ne tente pas de stocker les données associées sql:mapped="false" dans la colonne correspondante.
Le chargement en masse XML ignore les éléments et attributs qui ne sont pas mappés (soit parce qu’ils ne sont pas décrits dans le schéma, soit parce qu’ils sont annotés dans le schéma XSD avec sql:mapped="false"). Toutes les données non mappées entrent dans la colonne de dépassement, si une telle colonne est spécifiée à l’aide sql:overflow-fieldde .
Par exemple, considérez ce 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>
Étant donné que l’attribut HomePhone spécifie sql:mapped="false", le chargement en bloc XML ne mappe pas cet attribut à la colonne correspondante. Le schéma XSD identifie une colonne de dépassement de capacité (OverflowColumn) dans laquelle le chargement en masse XML stocke ces données non agrégées.
Pour tester un exemple de travail
Créez le tableau suivant dans la base de données tempdb :
USE tempdb CREATE TABLE Cust (CustomerID int PRIMARY KEY, CompanyName varchar(20) NOT NULL, City varchar(20) DEFAULT 'Seattle', OverflowColumn nvarchar(200)) GOEnregistrez le schéma fourni dans cet exemple en tant que SampleSchema.xml.
Enregistrez les exemples de données XML suivants en tant que 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>Pour exécuter le chargement en bloc XML, enregistrez et exécutez cet exemple Microsoft Visual Basic Scripting Edition (VBScript) en tant qu’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
Il s’agit du schéma XDR équivalent :
<?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>