Aracılığıyla paylaş


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

  1. Bu örnekte, sağlanan şema SampleSchema.xml kaydedin.

  2. 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
    
  3. 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)" />
    
  4. 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>