SQL:limit - alan ve sql:limit - değeri (SQLXML 4.0)
XML toplu yükleme işlemleri sql:limit-field ve sql:limit-value ek açıklamalar, tanım başına. Daha fazla bilgi için bkz:Süzme değerleri kullanarak sql:limit - alan ve sql:limit - değeri (SQLXML 4.0).
Örneğin, aşağıdaki tabloda bir veritabanı içeren varsayalım:
Müşteri (ŞirketAdı, MüşteriKimliği)
Adres (MüşteriNo, StreetAddress, AddressType)
Bir müşteri, birçok adresleri olabilir ve her adresi (örneğin, bir sevkiyat adresi veya bir faturalama adresi gibi) ilişkili bir adres türü vardır.
Şimdi, bu tabloları aşağıdaki ek açıklama eklenen XSD Şemasındaki belirtildiği gibi bu XML görünüm göz önünde bulundurun:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:annotation>
<xsd:appinfo>
<sql:relationship name="CustAddr"
parent="Customer"
parent-key="CustomerID"
child="Address"
child-key="CustomerID" />
</xsd:appinfo>
</xsd:annotation>
<xsd:element name="Customer" sql:relation="Customer" >
<xsd:complexType>
<xsd:attribute name="CustomerID" type="xsd:int" />
<xsd:attribute name="CompanyName" type="xsd:string" />
<xsd:attribute name="BillTo"
type="xsd:string"
sql:relation="Address"
sql:field="StreetAddress"
sql:limit-field="AddressType"
sql:limit-value="billing"
sql:relationship="CustAddr" >
</xsd:attribute>
<xsd:attribute name="ShipTo"
type="xsd:string"
sql:relation="Address"
sql:field="StreetAddress"
sql:limit-field="AddressType"
sql:limit-value="shipping"
sql:relationship="CustAddr" >
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Bu şemayı ve XML verileri aldıktan sonra XML toplu yükleme için fatura belirtilen değeri ekler öznitelik StreetAddress sütuna CustAddress tablo ile birlikte AddressType sütun "fatura" değeri.
Benzer şekilde, XML toplu yükleme AddressType sütununda "sevkiyat" değerini birlikte StreetAddress sütuna ShipTo özniteliği için belirtilen değer ekler.
Bir çalışan örneği sınamak için
Bu örnekte, sağlanan şema SampleSchema.xml kaydedin.
Bu tablo oluşturun:
CREATE TABLE Customer( CustomerID int PRIMARY KEY, CompanyName varchar(20) NOT NULL) GO CREATE TABLE Address( CustomerID int FOREIGN KEY REFERENCES Customer(CustomerID), StreetAddress varchar(50), AddressType varchar(10)) GO
Aşağıdaki örnek verileri SampleXMLData.xml kaydedin:
<Customer CustomerID="1111" CompanyName="Sean Chai" City="NY" BillTo="111 Maple (Billing) " ShipTo="111 Maple (Shipping)" /> <Customer CustomerID="1112" CompanyName="Dont Know" City="LA" BillTo="222 Spruce (Billing)" ShipTo="222 Spruce (Shipping)" />
XML toplu yükleme yürütmek için kaydedin ve bu yürütme Microsoft Visual Basic komut dosyası kullanan Edition (VBScript) örnek olarak 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.XMLFragment = True objBL.CheckConstraints=True objBL.Execute "c:\SampleSchema.xml", "c:\SampleXMLData.xml" set objBL=Nothing
Bu, eşdeğer XDR şeması oluşur:
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ElementType name="Customer" sql:relation="Customer" >
<AttributeType name="CustomerID" />
<AttributeType name="CompanyName" />
<AttributeType name="BillTo" />
<AttributeType name="ShipTo" />
<attribute type="CustomerID" />
<attribute type="CompanyName" />
<attribute type="BillTo"
sql:limit-field="AddressType"
sql:limit-value="billing"
sql:field="StreetAddress"
sql:relation="Address" >
<sql:relationship
key="CustomerID"
key-relation="Customer"
foreign-relation="Address"
foreign-key="CustomerID" />
</attribute>
<attribute type="ShipTo"
sql:limit-field="AddressType"
sql:limit-value="shipping"
sql:field="StreetAddress"
sql:relation="Address" >
<sql:relationship
key="CustomerID"
key-relation="Customer"
foreign-relation="Address"
foreign-key="CustomerID" />
</attribute>
</ElementType>
</Schema>