Aracılığıyla paylaş


xml Bulk Load örnekleri (SQLxml 4.0)

Aşağıdaki örnekte Microsoft xml Bulk Load işlevsellik görülmektedir SQL Server.Her örnekte xsd şeması ve eşdeğer xdr şeması sağlar.

Toplu yükleyicisi komut dosyası (ValidateAndBulkload.vbs)

Yazılan aşağıdaki komut dosyası, Microsoft ; xml dom xml belgesine Visual Basic Scripting Edition (VBScript) yükler onu bir şemaya göre doğrulamak için kullandığı yöntemi; ve xml bulk yükü için yük belge geçerliyse, XML'e yürütür bir SQL Server tablo.Bu komut dosyası, bu konuda başvuran tek tek örnekleri ile kullanılabilir.

Not

Veri dosyasından içerik karşıya, xml Bulk Load bir uyarı veya hata durum oluşturmaz.Bu nedenle, xml veri dosyası için toplu yükleme işlemi çalıştırmadan önce doğrulamak için bir uygulamadır.

Dim FileValid

set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkload.4.0")
objBL.ConnectionString = "provider=SQLOLEDB;data source=MyServer;database=tempdb;integrated security=SSPI"
objBL.ErrorLogFile = "c:\error.log"

'Validate the data file prior to bulkload
Dim sOutput 
sOutput = ValidateFile("SampleXMLData.xml", "", "SampleSchema.xml")
WScript.Echo sOutput

If FileValid Then
   ' Check constraints and initiate transaction (if needed)
   ' objBL.CheckConstraints = True
   ' objBL.Transaction=True
  'Execute XML bulkload using file.
  objBL.Execute "SampleSchema.xml", "SampleXMLData.xml"
  set objBL=Nothing
End If

Function ValidateFile(strXmlFile,strUrn,strXsdFile)
    
   ' Create a schema cache and add SampleSchema.xml to it.
   Dim xs, fso, sAppPath
   Set fso = CreateObject("Scripting.FileSystemObject") 
   Set xs = CreateObject("MSXML2.XMLSchemaCache.6.0")
   sAppPath = fso.GetFolder(".") 
   xs.Add strUrn, sAppPath & "\" & strXsdFile

   ' Create an XML DOMDocument object.
   Dim xd 
   Set xd = CreateObject("MSXML2.DOMDocument.6.0")

   ' Assign the schema cache to the DOM document.
   ' schemas collection.
   Set xd.schemas = xs

   ' Load XML document as DOM document.
   xd.async = False
   xd.Load sAppPath & "\" & strXmlFile

   ' Return validation results in message to the user.
   If xd.parseError.errorCode <> 0 Then
        ValidateFile = "Validation failed on " & _
             strXmlFile & vbCrLf & _
             "=====================" & vbCrLf & _
             "Reason: " & xd.parseError.reason & _
             vbCrLf & "Source: " & _
             xd.parseError.srcText & _
             vbCrLf & "Line: " & _
             xd.parseError.Line & vbCrLf
             FileValid = False
    Else
        ValidateFile = "Validation succeeded for " & _
             strXmlFile & vbCrLf & _
             "======================" & _
             vbCrLf & "Contents to be bulkloaded" & vbCrLf
             FileValid = True
    End If
End Function

A.Toplu bir tablo xml yükleme

Bu örnek bir bağlantı oluşturur örnek , SQL Server içinde belirtilen ConnectionString özellik (sunucum).Bu örnek ayrıca belirtir ErrorLogFile özellik.Bu nedenle, farklı bir konuma geçmek için de karar verebilirsiniz belirtilen dosya ("C:\error.log"), hata çıktı kaydedilir.Ayrıca dikkat Execute yöntem parametreleri eşleme şema dosyası (SampleSchema.xml) ve xml veri dosyası (SampleXMLData.xml) sahiptir.Ne zaman toplu yükleme yürütür, Cust tablo içinde oluşturduğunuz tempdb veritabanı, xml veri dosyasının içeriğini alarak yeni kayıtları içerecek.

Örneği sınamak içintoplu yükleme

  1. Bu tablo oluşturun:

    CREATE TABLE Cust(CustomerID  int PRIMARY KEY,
                      CompanyName varchar(20),
                      City        varchar(20))
    GO
    
  2. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve SampleSchema.xml kaydedin.Aşağıdaki xsd şeması bu dosyaya ekleyin:

    <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" maxOccurs="unbounded">
               <xsd:complexType>
                 <xsd:sequence>
                   <xsd:element name="CustomerID"  type="xsd:integer" />
                   <xsd:element name="CompanyName" type="xsd:string" />
                   <xsd:element name="City"        type="xsd:string" />
                 </xsd:sequence>
               </xsd:complexType>
             </xsd:element>
           </xsd:sequence>
          </xsd:complexType>
         </xsd:element>
    </xsd:schema>
    
  3. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve SampleXMLData.xml kaydedin.Aşağıdaki xml belgesi bu dosyaya ekleyin:

    <ROOT>
      <Customers>
        <CustomerID>1111</CustomerID>
        <CompanyName>Sean Chai</CompanyName>
        <City>New York</City>
      </Customers>
      <Customers>
        <CustomerID>1112</CustomerID>
        <CompanyName>Tom Johnston</CompanyName>
         <City>Los Angeles</City>
      </Customers>
      <Customers>
        <CustomerID>1113</CustomerID>
        <CompanyName>Institute of Art</CompanyName>
        <City>Chicago</City>
      </Customers>
    </ROOT>
    
  4. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve dosyayı ValidateAndBulkload.vbs kaydedin.Bu dosya için bu konunun başında yukarıda sağlanan VBScript kodu ekleyin.Bağlantıyı değiştirmek dize uygun sunucu adı sağlamak için.Parametre olarak belirtilen dosyalar için uygun yol belirtmek Execute yöntem.

  5. VBScript kod yürütebilir.xml Bulk Load xml Cust yükler tablo.

Eşdeğer xdr şeması budur:

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data" 
        xmlns:dt="urn:schemas-microsoft-com:xml:datatypes"  
        xmlns:sql="urn:schemas-microsoft-com:xml-sql" > 

   <ElementType name="CustomerID" dt:type="int" />
   <ElementType name="CompanyName" dt:type="string" />
   <ElementType name="City" dt:type="string" />

   <ElementType name="ROOT" sql:is-constant="1">
      <element type="Customers" />
   </ElementType>

   <ElementType name="Customers"  sql:relation="Cust" >
      <element type="CustomerID"  sql:field="CustomerID" />
      <element type="CompanyName" sql:field="CompanyName" />
      <element type="City"        sql:field="City" />

   </ElementType>
</Schema>

B.Toplu yükleme xml verilerinin birden çok tablo

Bu örnekte, xml belgesi oluşur <Müşteri> ve <Sipariş> öğeleri.

<ROOT>
  <Customers>
    <CustomerID>1111</CustomerID>
    <CompanyName>Sean Chai</CompanyName>
    <City>NY</City>
    <Order OrderID="1" />
    <Order OrderID="2" />
  </Customers>
  <Customers>
    <CustomerID>1112</CustomerID>
    <CompanyName>Tom Johnston</CompanyName>
     <City>LA</City>  
    <Order OrderID="3" />
  </Customers>
  <Customers>
    <CustomerID>1113</CustomerID>
    <CompanyName>Institute of Art</CompanyName>
    <Order OrderID="4" />
  </Customers>
</ROOT>

Bu örnek toplu iki tabloya xml verilerini yükler Cust ve CustOrder:

Cust(CustomerID, CompanyName, City)
CustOrder(OrderID, CustomerID)

Aşağıdaki xsd şeması, xml görünümü bu tabloları tanımlar.Üst-alt ilişkisi şema belirtir <Müşteri> ve <Sipariş> öğeleri.

<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="CustCustOrder"
          parent="Cust"
          parent-key="CustomerID"
          child="CustOrder"
          child-key="CustomerID" />
    </xsd:appinfo>
  </xsd:annotation>
  <xsd:element name="ROOT" sql:is-constant="1" >
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="Customers" sql:relation="Cust" >
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="CustomerID"  type="xsd:integer" />
              <xsd:element name="CompanyName" type="xsd:string" />
              <xsd:element name="City"        type="xsd:string" />
              <xsd:element name="Order" 
                          sql:relation="CustOrder"
                          sql:relationship="CustCustOrder" >
                <xsd:complexType>
                  <xsd:attribute name="OrderID" type="xsd:integer" />
                </xsd:complexType>
              </xsd:element>
             </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

xml Bulk yükü kullanır arasında yukarıda belirtilen birincil anahtar yabancı anahtar ilişkisi <Cust> ve <CustOrder> öğeleri için toplu yükleme verileri her iki tablo.

Örneği sınamak içintoplu yükleme

  1. İki tablo oluşturmak tempdb veritabanı:

    USE tempdb
    CREATE TABLE Cust(
           CustomerID  int PRIMARY KEY,
           CompanyName varchar(20),
           City        varchar(20))
    CREATE TABLE CustOrder(        OrderID     int PRIMARY KEY, 
            CustomerID int FOREIGN KEY REFERENCES Cust(CustomerID))
    
  2. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve SampleSchema.xml kaydedin.Dosya için bu örnekte sağlanan xsd şeması ekleyin.

  3. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve SampleData.xml kaydedin.Sağlanan xml belgesi daha önce bu örnek dosyasına ekleyin.

  4. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve dosyayı ValidateAndBulkload.vbs kaydedin.Bu dosya için bu konunun başında yukarıda sağlanan VBScript kodu ekleyin.Bağlantıyı değiştirmek dize uygun sunucu ve veritabanı adı sağlamak için.Parametre olarak belirtilen dosyalar için uygun yol belirtmek Execute yöntem.

  5. VBScript kodu yürütün.xml Bulk Load xml belgesini Cust ve CustOrder tablolarını yükler.

Eşdeğer xdr şeması budur:

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data" 
        xmlns:dt="urn:schemas-microsoft-com:xml:datatypes"  
        xmlns:sql="urn:schemas-microsoft-com:xml-sql" > 
   <ElementType name="CustomerID" dt:type="int" />
   <ElementType name="CompanyName" dt:type="string" />
   <ElementType name="City" dt:type="string" />

   <ElementType name="ROOT" sql:is-constant="1">
      <element type="Customers" />
   </ElementType>

   <ElementType name="Customers" sql:relation="Cust" >
      <element type="CustomerID" sql:field="CustomerID" />
      <element type="CompanyName" sql:field="CompanyName" />
      <element type="City" sql:field="City" />
      <element type="Order" >
<sql:relationship
                key-relation="Cust"
                key="CustomerID"
                foreign-key="CustomerID"
                foreign-relation="CustOrder" />
      </element>
   </ElementType>
    <ElementType name="Order" sql:relation="CustOrder" >
      <AttributeType name="OrderID" />
      <AttributeType name="CustomerID" />
      <attribute type="OrderID" />
      <attribute type="CustomerID" />
    </ElementType>
</Schema>

C.toplu yükleme xml şemasına ilişkiler zinciri kullanma

Bu örnek eşleme şemasında belirtilen ortası ilişki xml Bulk yükü tarafından veri yüklemek için nasıl kullanıldığı gösterilmektedir bir tablo , ortası ilişkiyi temsil eder.

Örneğin, bu xsd şeması 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="OrderOD"
          parent="Ord"
          parent-key="OrderID"
          child="OrderDetail"
          child-key="OrderID" />

    <sql:relationship name="ODProduct"
          parent="OrderDetail"
          parent-key="ProductID"
          child="Product"
          child-key="ProductID" 
          inverse="true"/>
  </xsd:appinfo>
</xsd:annotation>

  <xsd:element name="ROOT" sql:is-constant="1" >
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="Order" 
                     sql:relation="Ord" 
                     sql:key-fields="OrderID" >
          <xsd:complexType>
            <xsd:sequence>
             <xsd:element name="Product"
                          sql:relation="Product" 
                          sql:key-fields="ProductID"
                          sql:relationship="OrderOD ODProduct">
               <xsd:complexType>
                 <xsd:attribute name="ProductID" type="xsd:int" />
                 <xsd:attribute name="ProductName" type="xsd:string" />
               </xsd:complexType>
             </xsd:element>
           </xsd:sequence>
           <xsd:attribute name="OrderID"   type="xsd:integer" /> 
           <xsd:attribute name="CustomerID"   type="xsd:string" />
         </xsd:complexType>
       </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

Şema belirtir bir <Sipariş> öğe ile bir <Ürün> alt öğesi.The <Order> element maps to Ord table and the <Product> element maps to the Product table in the database.Belirtilen ilişki zinciri <Ürün> OrderDetail tarafından temsil edilen ortası ilişki öğesini tanımlayan tablo.(Birçok ürünü sipariş içerebilir ve bir ürün birçok siparişlerindeki dahil edilebilir.)

Toplu yükleme Bu şemayı bir xml belgesiyle olduğunda, sipariş, ürün ve OrderDetail tabloları kayıtlar eklenir.

Bir çalışma örneği sınamak için

  1. Üç tablo oluşturun:

    CREATE TABLE Ord (
             OrderID     int  PRIMARY KEY,
             CustomerID  varchar(5))
    GO
    CREATE TABLE Product (
             ProductID   int PRIMARY KEY,
             ProductName varchar(20))
    GO
    CREATE TABLE OrderDetail (
           OrderID     int FOREIGN KEY REFERENCES Ord(OrderID),
           ProductID   int FOREIGN KEY REFERENCES Product(ProductID),
                       CONSTRAINT OD_key PRIMARY KEY (OrderID, ProductID))
    GO
    
  2. Bu örnekte, yukarıda sağlanan şema SampleSchema.xml kaydedin.

  3. Aşağıdaki örnek xml verileri SampleXMLData.xml kaydedin:

    <ROOT>  
      <Order OrderID="1" CustomerID="ALFKI">
        <Product ProductID="1" ProductName="Chai" />
        <Product ProductID="2" ProductName="Chang" />
      </Order>
      <Order OrderID="2" CustomerID="ANATR">
        <Product ProductID="3" ProductName="Aniseed Syrup" />
        <Product ProductID="4" ProductName="Gumbo Mix" />
      </Order>
    </ROOT>
    
  4. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve dosyayı ValidateAndBulkload.vbs kaydedin.Bu dosya için bu konunun başında yukarıda sağlanan VBScript kodu ekleyin.Bağlantıyı değiştirmek dize uygun sunucu ve veritabanı adı sağlamak için.Bu örnek için kaynak kodundan aşağıdaki satırları yorumsuz.

    objBL.CheckConstraints = True
    objBL.Transaction=True
    
  5. VBScript kod yürütebilir.xml Bulk Load xml belgesinin sipariş ve ürün tablolarını yükler.

D.Toplu yükleme kimliği türü sütunlarda

Bu örnek, kimlik türü sütunlar toplu yükleme nasıl işleyeceğini gösterir.Örnekte, toplu (sipariş, ürün ve OrderDetail) üç tabloya yüklenen veri var.

Bu tablolar:

  • Sipariş, Sipariş Kimliği tablo bir kimlik türü sütun

  • ProductID ürününün tablo türü kimlik sütunu olan.

  • OrderDetail SiparişNo ve ProductID sütunlarında karşılık gelen birincil anahtar sütunları sipariş ve ürün tablolardaki başvuran yabancı anahtar sütunları olan.

Bu örnek tablo şemalarını şunlardır:

Ord (OrderID, CustomerID)
Product (ProductID, ProductName)
OrderDetail (OrderID, ProductID)

Bu örnekte, xml Bulk Load KeepIdentity özellik BulkLoad nesne modeli küme için false.Bu nedenle, SQL Server Ürün ve sipariş tablolarında ProductID ve SiparişNo sütunlar için kimlik değerleri sırasıyla oluşturur (yüklenen toplu olarak belgelerde sağlanan tüm değerler yoksayılır).

Bu durum, xml Bulk Load tablolar arasında birincil anahtar yabancı anahtar ilişkisi tanımlar.BULK Load önce kayıtları tablolarda birincil anahtar ile ekler, sonra tarafından oluşturulan kimlik değerini yayar SQL Server tablolara yabancı anahtar sütunları.Aşağıdaki örnekte, xml Bulk Load bu sırada tablolardaki verileri ekler:

  1. Ürün

  2. Sipariş

  3. OrderDetail

    Not

    Ürünler ve sipariş üretilen kimlik değerlerini yaymak için tablos, işleme mantığı gerektiren OrderDetails içine eklenmek üzere daha sonra bu değerleri izlemek xml Bulk Load tablo.Bunu yapmak için xml Bulk Load Ara tabloları oluşturur, bu tablolardaki verileri doldurur ve daha sonra bunları kaldırır.

Bir çalışma örneği sınamak için

  1. Bu tablolar oluşturun:

    CREATE TABLE Ord (
             OrderID     int identity(1,1)  PRIMARY KEY,
             CustomerID  varchar(5))
    GO
    CREATE TABLE Product (
             ProductID   int identity(1,1) PRIMARY KEY,
             ProductName varchar(20))
    GO
    CREATE TABLE OrderDetail (
           OrderID     int FOREIGN KEY REFERENCES Ord(OrderID),
           ProductID   int FOREIGN KEY REFERENCES Product(ProductID),
                       CONSTRAINT OD_key PRIMARY KEY (OrderID, ProductID))
    GO
    
  2. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve SampleSchema.xml kaydedin.Bu xsd şeması bu dosyaya ekleyin.

    <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="OrderOD"
              parent="Ord"
              parent-key="OrderID"
              child="OrderDetail"
              child-key="OrderID" />
        <sql:relationship name="ODProduct"
              parent="OrderDetail"
              parent-key="ProductID"
              child="Product"
              child-key="ProductID" 
              inverse="true"/>
       </xsd:appinfo>
     </xsd:annotation>
    
      <xsd:element name="Order" sql:relation="Ord" 
                                sql:key-fields="OrderID" >
       <xsd:complexType>
         <xsd:sequence>
            <xsd:element name="Product" sql:relation="Product" 
                         sql:key-fields="ProductID"
                         sql:relationship="OrderOD ODProduct">
              <xsd:complexType>
                 <xsd:attribute name="ProductID" type="xsd:int" />
                 <xsd:attribute name="ProductName" type="xsd:string" />
              </xsd:complexType>
            </xsd:element>
         </xsd:sequence>
            <xsd:attribute name="OrderID"   type="xsd:integer" /> 
            <xsd:attribute name="CustomerID"   type="xsd:string" />
        </xsd:complexType>
      </xsd:element>
    </xsd:schema>
    
  3. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve SampleXMLData.xml kaydedin.Aşağıdaki xml belgesi ekleyin.

    <ROOT>  
      <Order OrderID="11" CustomerID="ALFKI">
        <Product ProductID="11" ProductName="Chai" />
        <Product ProductID="22" ProductName="Chang" />
      </Order>
      <Order OrderID="22" CustomerID="ANATR">
         <Product ProductID="33" ProductName="Aniseed Syrup" />
        <Product ProductID="44" ProductName="Gumbo Mix" />
      </Order>
    </ROOT>
    
  4. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve dosyayı ValidateAndBulkload.vbs kaydedin.Bu dosyaya aşağıdaki VBScript kodu ekleyin.Bağlantıyı değiştirmek dize uygun sunucu ve veritabanı adı sağlamak için.Parametre olarak hizmet veren dosyaları için uygun yol belirtmek Execute yöntem.

    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.Transaction = False
    objBL.KeepIdentity = False
    objBL.Execute "SampleSchema.xml", "SampleXMLData.xml"
    Set objBL = Nothing
    MsgBox "Done."
    
  5. VBScript kod yürütebilir.xml Bulk yükü uygun tablolara veri yükler.

E.Toplu yükleme önce tablo şemaları oluşturma

xml Bulk Load, isteğe bağlı olarak toplu yükleme önce yoksa tablolar oluşturabilir.Ayar SchemaGen özellik SQLXMLBulkLoad nesne True yapar.Ayrıca isteğe bağlı olarak var olan tabloları bırakın bunları ayarlayarak yeniden oluşturmak için xml Bulk Load istek SGDropTables özellik true.Aşağıdaki VBScript örneği bu özellikleri kullanımını göstermektedir.

Ayrıca, bu örnek iki ek özelliği true olarak ayarlar:

  • CheckConstraints.Setting this property to TRUE ensures that the data being inserted into the tables does not violate any constraints that have been specified on the tables (in this case the PRIMARY KEY/FOREIGN KEY constraints specified between the Cust and CustOrder tables).Kısıtlama ihlali ise, toplu yükleme başarısız olur.

  • XMLFragment.This property must be set to TRUE because the sample XML document (data source) contains no single, top-level element (and is thus a fragment).

VBScript kodu budur:

Dim objBL 
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.XMLFragment = True
objBL.SchemaGen = True
objBL.SGDropTables = True

objBL.Execute "SampleSchema.xml", "SampleXMLData.xml"
Set objBL = Nothing

Bir çalışma örneği sınamak için

  1. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve SampleSchema.xml kaydedin.Sağlanan xsd şeması, önceki örnekte, "Using zinciri ilişkilerde şemaya xml toplu yükleme" dosyasına ekleyin.

  2. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve SampleXMLData.xml kaydedin.Sağlanan xml belgesi daha önceki örnekte, "Using zinciri ilişkilerde şemaya xml toplu yükleme" dosyasına ekleyin.Kaldırma <kök> öğesi (bir parçası yapmak için) belgeden.

  3. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve dosyayı ValidateAndBulkload.vbs kaydedin.Bu dosya, bu örnekte VBScript kodunu ekleyin.Bağlantıyı değiştirmek dize uygun sunucu ve veritabanı adı sağlamak için.Parametre olarak belirtilen dosyalar için uygun yol belirtmek Execute yöntem.

  4. VBScript kod yürütebilir.xml Bulk Load sağlanan ve bulk yükü olan eşleme şema temel alınarak gerekli tabloları veri içinde oluşturur.

F.Toplu bir akışından yükleme

The Execute method of the XML Bulk Load object model takes two parameters.İlk parametre eşleme şema dosyasıdır.İkinci parametre veritabanında yüklenecek xml verileri sağlar.xml verilerini geçirmek için iki yol vardır Execute yöntem, xml Bulk Load:

  • Dosya adı parametresi olarak belirtin.

  • xml verileri içeren bir akış geçirin.

Bu örnekte gösterilmektedir nasıl toplu yükleme bir.

VBScript ilk müşteriler müşteri bilgilerini almak için bir deyim yürütür tablo Northwind veritabanındaki.for xml yan tümce tümce tümce deyim içinde (öğeleri seçeneği ile) belirtildiğinden, öğe merkezli bir xml belgesi bu formun sorgu döndürür:

<Customer>
  <CustomerID>..</CustomerID>
  <CompanyName>..</CompanyName>
  <City>..</City>
</Customer>
...

Komut dosyası için bir akışı olarak xml sonra geçen Execute yöntem olarak ikinci bir parametre kendi.The Execute method bulk loads the data into the Cust table.

Bu komut dosyasını ayarlaması nedeniyle SchemaGen özellik true ve SGDropTables özellik true, xml Bulk Load Cust tablo oluşturur belirtilen veritabanı.(Tablo zaten varsa, bunu önce tablo düşünceye ve sonra yeniden oluşturur.)

VBScript örneği budur:

Set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkload.4.0")
Set objCmd = CreateObject("ADODB.Command")
Set objConn = CreateObject("ADODB.Connection")
Set objStrmOut = CreateObject ("ADODB.Stream")

objBL.ConnectionString = "provider=SQLOLEDB;data source=localhost;database=tempdb;integrated security=SSPI"
objBL.ErrorLogFile     = "c:\error.log"
objBL.CheckConstraints = True
objBL.SchemaGen        = True
objBL.SGDropTables     = True
objBL.XMLFragment      = True
' Open a connection to the instance of SQL Server to get the source data.

objConn.Open "provider=SQLOLEDB;server=(local);database=tempdb;integrated security=SSPI"
Set objCmd.ActiveConnection = objConn
objCmd.CommandText = "SELECT CustomerID, CompanyName, City FROM Customers FOR XML AUTO, ELEMENTS"

' Open the return stream and execute the command.
Const adCRLF = -1
Const adExecuteStream = 1024
objStrmOut.Open
objStrmOut.LineSeparator = adCRLF
objCmd.Properties("Output Stream").Value = objStrmOut
objCmd.Execute , , adExecuteStream
objStrmOut.Position = 0

' Execute bulk load. Read source XML data from the stream.
objBL.Execute "SampleSchema.xml", objStrmOut

Set objBL = Nothing

Aşağıdaki xsd eşleme şeması tablo oluşturmak için gerekli bilgileri sağlar:

<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="true" >
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element ref="Customers"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>
<xsd:element name="Customers" sql:relation="Cust" >
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element name="CustomerID"
                   type="xsd:string"
                   sql:datatype="nvarchar(5)"/>
      <xsd:element name="CompanyName"
                   type="xsd:string"
                   sql:datatype="nvarchar(40)"/>
      <xsd:element name="City"
                   type="xsd:string"
                   sql:datatype="nvarchar(40)"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>
</xsd:schema>

Eşdeğer xdr şeması budur:

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data" 
        xmlns:dt="urn:schemas-microsoft-com:xml:datatypes"  
        xmlns:sql="urn:schemas-microsoft-com:xml-sql" >
   <ElementType name="CustomerID" dt:type="int" />
   <ElementType name="CompanyName" dt:type="string" />
   <ElementType name="City" dt:type="string" />

   <ElementType name="root" sql:is-constant="1">
      <element type="Customers" />
   </ElementType>

   <ElementType name="Customers" sql:relation="Cust"  >
      <element type="CustomerID" sql:field="CustomerID" />
      <element type="CompanyName" sql:field="CompanyName" />
      <element type="City" sql:field="City" />
    </ElementType>
</Schema>

Varolan bir dosya üzerinde bir akımı açılıyor

Ayrıca, varolan bir xml veri dosyasını akışta açın ve akış için parametre olarak geçirmek Execute (yerine dosya adı parametre olarak geçirerek) yöntem.

Bu bir stream parametre olarak geçirerek, bir Visual Basic örnek verilmiştir:

Private Sub Form_Load()
Dim objBL As New SQLXMLBulkLoad
Dim objStrm As New ADODB.Stream
Dim objFileSystem As New Scripting.FileSystemObject
Dim objFile As Scripting.TextStream

MsgBox "Begin BulkLoad..."
objBL.ConnectionString = "provider=SQLOLEDB;data source=localhost;database=tempdb;integrated security=SSPI"
objBL.ErrorLogFile = "c:\error.log"
objBL.CheckConstraints = True
objBL.SchemaGen = True
objBL.SGDropTables = True
' Here again a stream is specified that contains the source data 
' (instead of the file name). But this is just an illustration.
' Usually this is useful if you have an XML data 
' stream that is created by some other means that you want to bulk 
' load. This example starts with an XML text file, so it may not be the 
' best to use a stream (you can specify the file name directly).
' Here you could have specified the file name itself. 
Set objFile = objFileSystem.OpenTextFile("c:\SampleData.xml")
objStrm.Open
objStrm.WriteText objFile.ReadAll
objStrm.Position = 0
objBL.Execute "c:\SampleSchema.xml", objStrm

Set objBL = Nothing
MsgBox "Done."
End Sub

Uygulamayı test etmek için aşağıdaki xml belgesinde bir dosya (SampleData.xml) ve bu örnekte sağlanan xsd şeması kullanın:

xml kaynak verileri (SampleData.xml) budur:

<ROOT>
  <Customers>
    <CustomerID>1111</CustomerID>
    <CompanyName>Hanari Carnes</CompanyName>
    <City>NY</City>
    <Order OrderID="1" />
    <Order OrderID="2" />
  </Customers>

  <Customers>
    <CustomerID>1112</CustomerID>
    <CompanyName>Toms Spezialitten</CompanyName>
     <City>LA</City>
    <Order OrderID="3" />
  </Customers>
  <Customers>
    <CustomerID>1113</CustomerID>
    <CompanyName>Victuailles en stock</CompanyName>
    <Order CustomerID= "4444" OrderID="4" />
</Customers>
</ROOT>

Eşdeğer xdr şeması budur:

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data" 
        xmlns:dt="urn:schemas-microsoft-com:xml:datatypes"  
        xmlns:sql="urn:schemas-microsoft-com:xml-sql" >

    <ElementType name="Order" sql:relation="CustOrder" >
      <AttributeType name="OrderID" />
      <AttributeType name="CustomerID" />
      <attribute type="OrderID" />
      <attribute type="CustomerID" />
    </ElementType>

   <ElementType name="CustomerID" dt:type="int" />
   <ElementType name="CompanyName" dt:type="string" />
   <ElementType name="City" dt:type="string" />

   <ElementType name="root" sql:is-constant="1">
      <element type="Customers" />
   </ElementType>

   <ElementType name="Customers" sql:relation="Cust"  >
      <element type="CustomerID" sql:field="CustomerID" />
      <element type="CompanyName" sql:field="CompanyName" />
      <element type="City" sql:field="City" />
      <element type="Order" >
             <sql:relationship
                key-relation="Cust"
                key="CustomerID"
                foreign-key="CustomerID"
                foreign-relation="CustOrder" />
      </element>
   </ElementType>
</Schema>

G.Toplu yükleme taşma sütunlar

Kullanarak eşleme şema taşma sütun belirtir, sql:overflow-field ek açıklama, xml Bulk Load kopyalar tüm unconsumed verileri kaynak belgesine bu sütun.

Bu xsd şeması 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="CustCustOrder"
          parent="Cust"
          parent-key="CustomerID"
          child="CustOrder"
          child-key="CustomerID" />
  </xsd:appinfo>
</xsd:annotation>
  <xsd:element name="Customers" sql:relation="Cust"
                                sql:overflow-field="OverflowColumn" >
   <xsd:complexType>
     <xsd:sequence>
       <xsd:element name="CustomerID"  type="xsd:integer" />
       <xsd:element name="CompanyName" type="xsd:string" />
       <xsd:element name="City"        type="xsd:string" />
       <xsd:element name="Order" 
                          sql:relation="CustOrder"
                          sql:relationship="CustCustOrder" >
         <xsd:complexType>
          <xsd:attribute name="OrderID" type="xsd:integer" />
          <xsd:attribute name="CustomerID" type="xsd:integer" />
         </xsd:complexType>
       </xsd:element>
     </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

Taşma sütun (OverflowColumn) Cust tablo için şema tanımlar.Sonuç olarak, tüm xml verilerini her biri için unconsumed <Müşteri> öğe ekleniyor bu sütun.

Not

Tüm öğeleri soyut (öğeler için hangi soyut = "true" belirtilir) ve tüm öznitelikleri yasaklanmış (öznitelikleri kendisi için Yasaklanmış = "true" belirtilen) taşma xml Bulk Load tarafından kabul edilir ve taşmaya eklenen sütunbelirtilmiş olması durumunda,.(Aksi halde, bunlar dikkate alınmaz.)

Bir çalışma örneği sınamak için

  1. İki tablo oluşturmak tempdb veritabanı:

    USE tempdb
    CREATE TABLE Cust (
                  CustomerID     int         PRIMARY KEY,
                  CompanyName    varchar(20) NOT NULL,
                  City           varchar(20) DEFAULT 'Seattle',
                  OverflowColumn nvarchar(200))
    GO
    CREATE TABLE CustOrder (
                  OrderID    int PRIMARY KEY,
                  CustomerID int FOREIGN KEY 
                                 REFERENCES Cust(CustomerID))
    GO
    
  2. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve SampleSchema.xml kaydedin.Dosya için bu örnekte sağlanan xsd şeması ekleyin.

  3. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve SampleXMLData.xml kaydedin.Aşağıdaki xml belge dosyasına ekleyin:

    <ROOT>
      <Customers>
        <CustomerID>1111</CustomerID>
        <CompanyName>Hanari Carnes</CompanyName>
        <City><![CDATA[NY]]> </City>
        <Junk>garbage in overflow</Junk>
        <Order OrderID="1" />
        <Order OrderID="2" />
      </Customers>
    
      <Customers>
        <CustomerID>1112</CustomerID>
        <CompanyName>Toms Spezialitten</CompanyName>
         <![CDATA[LA]]> 
        <!-- <xyz><address>111 Maple, Seattle</address></xyz>   -->
        <Order OrderID="3" />
      </Customers>
      <Customers>
        <CustomerID>1113</CustomerID>
        <CompanyName>Victuailles en stock</CompanyName>
        <Order OrderID="4" />
    </Customers>
    </ROOT>
    
  4. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve dosyayı ValidateAndBulkload.vbs kaydedin.Bu dosya için aşağıdaki Microsoft Visual Basic Scripting Edition (VBScript) kodu ekleyin.Bağlantıyı değiştirmek dize uygun sunucu ve veritabanı adı sağlamak için.Parametre olarak belirtilen dosyalar için uygun yol belirtmek Execute yöntem.

    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 "SampleSchema.xml", "SampleXMLData.xml"
    set objBL=Nothing
    
  5. VBScript kod yürütebilir.

Eşdeğer xdr şeması budur:

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data" 
        xmlns:dt="urn:schemas-microsoft-com:xml:datatypes"  
        xmlns:sql="urn:schemas-microsoft-com:xml-sql" >

    <ElementType name="Order" sql:relation="CustOrder" >
      <AttributeType name="OrderID" />
      <AttributeType name="CustomerID" />
      <attribute type="OrderID" />
      <attribute type="CustomerID" />
    </ElementType>

   <ElementType name="CustomerID" dt:type="int" />
   <ElementType name="CompanyName" dt:type="string" />
   <ElementType name="City" dt:type="string" />

   <ElementType name="root" sql:is-constant="1">
      <element type="Customers" />
   </ElementType>

   <ElementType name="Customers" sql:relation="Cust" 
                       sql:overflow-field="OverflowColumn"  >
      <element type="CustomerID" sql:field="CustomerID" />
      <element type="CompanyName" sql:field="CompanyName" />
      <element type="City" sql:field="City" />
      <element type="Order" >
             <sql:relationship
                key-relation="Cust"
                key="CustomerID"
                foreign-key="CustomerID"
                foreign-relation="CustOrder" />
      </element>
   </ElementType>
</Schema>

H.İşlem modunda geçici dosyalar için dosya yol belirtme

Toplu yükleme modunda hareket olduğunda (yani, Transaction özellik true olarak küme), ayrıca ayarlamanız gerekir TempFilePath özellik aşağıdaki koşullardan biri doğru olduğunda:

  • Uzak bir sunucuya toplu yükleme var.

  • Bir diğer yerel sürücü veya klasörü (bir temp ortam değişkeni tarafından belirtilen yol dışında) kullanmak istediğiniz işlem modunda oluşturulan geçici dosyaları depolamak için.

Örneğin, aşağıdaki VBScript kodu toplu işlem modunda veritabanı tabloları içine SampleXMLData.xml dosyasından veri yükler.The TempFilePath property is specified to set the path for the temporary files that are generated in transaction mode.

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.Transaction=True
objBL.TempFilePath="\\Server\MyDir"
objBL.Execute "SampleSchema.xml", "SampleXMLData.xml"
set objBL=Nothing

Not

Geçici dosya yol hedef hizmet hesabına erişebileceği paylaşılan bir konumda olması gerektiğini örnek , SQL Server ve hesabına çalışan toplu yük uygulama.Geçici dosya yol yerel bir sunucuda toplu yükleme olmadığı sürece, bir unc yol (örneğin, \\sunucu adı\paylaşım adı) olması gerekir.

Bir çalışma örneği sınamak için

  1. Bu tablo , tempdb veritabanı:

    USE tempdb
    CREATE TABLE Cust (     CustomerID uniqueidentifier, 
          LastName  varchar(20))
    GO
    
  2. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve SampleSchema.xml kaydedin.Aşağıdaki xsd şema dosyasına ekleyin:

    <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="true" >
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element ref="Customers" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    
      <xsd:element name="Customers" sql:relation="Cust" >
       <xsd:complexType>
         <xsd:attribute name="CustomerID"  type="xsd:string" />
         <xsd:attribute name="LastName" type="xsd:string" />
       </xsd:complexType>
      </xsd:element>
    </xsd:schema>
    
  3. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve SampleXMLData.xml kaydedin.Aşağıdaki xml belge dosyasına ekleyin:

    <ROOT>
    <Customers CustomerID="6F9619FF-8B86-D011-B42D-00C04FC964FF" 
               LastName="Smith" />
    </ROOT>
    
  4. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve dosyayı ValidateAndBulkload.vbs kaydedin.Bu dosyaya aşağıdaki VBScript kodu ekleyin.Bağlantıyı değiştirmek dize uygun sunucu ve veritabanı adı sağlamak için.Parametre olarak belirtilen dosyalar için uygun yol belirtmek Execute yöntem.Ayrıca belirtmek için uygun yol TempFilePath özellik.

    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.Transaction=True
    objBL.TempFilePath="\\server\folder"
    objBL.Execute "SampleSchema.xml", "SampleXMLData.xml"
    set objBL=Nothing
    
  5. VBScript kod yürütebilir.

    Buna karşılık gelen şema belirtmeniz gerekir sql:datatype için CustomerID ne zaman öznitelik değeri CustomerID kaşlı ayraçlar ({ve}) gibi içeren bir GUID olarak olarak belirtilir:

    <ROOT>
    <Customers CustomerID="{6F9619FF-8B86-D011-B42D-00C04FC964FF}" 
               LastName="Smith" />
    </ROOT>
    

    Bu güncelleştirilmiş şema oluşur:

    <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="true" >
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element ref="Customers" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    
      <xsd:element name="Customers" sql:relation="Cust" >
       <xsd:complexType>
         <xsd:attribute name="CustomerID"  type="xsd:string" 
                        sql:datatype="uniqueidentifier" />
         <xsd:attribute name="LastName" type="xsd:string" />
       </xsd:complexType>
      </xsd:element>
    </xsd:schema>
    

    Zaman sql:datatype Belirtilen sütun tipi olarak tanımlayan uniqueidentifier, toplu yükleme işlemi kaldırır ayraçlar ({ve}) dan CustomerID değer sütununda eklemeden önce.

Eşdeğer xdr şeması budur:

<?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="ROOT" sql:is-constant="1">
      <element type="Customers" />
</ElementType>
<ElementType name="Customers" sql:relation="Cust" >
  <AttributeType name="CustomerID"  sql:datatype="uniqueidentifier" />
  <AttributeType name="LastName"   />

  <attribute type="CustomerID" />
  <attribute type="LastName"   />
</ElementType>
</Schema>

Ö.ConnectionCommand özellik ile varolan bir veritabanı bağlantısı kullanma

xml toplu yükleme varolan bir ado bağlantısı kullanabilirsiniz.xml Bulk Load veri kaynak üzerinde gerçekleştirilen birçok işlemi yalnızca biri ise, bu özellik yararlıdır.

The ConnectionCommand property enables you to use an existing ADO connection by using an ADO command object.Bu Visual Basic aşağıdaki örnekte gösterilmiştir:

Private Sub Form_Load()
Dim objBL As New SQLXMLBulkLoad4
Dim objCmd As New ADODB.Command
Dim objConn As New ADODB.Connection

'Open a connection to an instance of SQL Server.
objConn.Open "provider=SQLOLEDB;data source=(local);database=tempdb;integrated security=SSPI"
'Ask the Command object to use the connection just established.
Set objCmd.ActiveConnection = objConn

'Tell Bulk Load to use the active command object that is using the Connection obj.
objBL.ConnectionCommand = objCmd
objBL.ErrorLogFile = "c:\error.log"
objBL.CheckConstraints = True
'The Transaction property must be set to True if you use ConnectionCommand.
objBL.Transaction = True
objBL.Execute "SampleSchema.xml", "SampleXMLData.xml"
Set objBL = Nothing
End Sub

Bir çalışma örneği sınamak için

  1. İki tablo oluşturmak tempdb veritabanı:

    USE tempdb
    CREATE TABLE Cust(
                   CustomerID   varchar(5) PRIMARY KEY,
                   CompanyName  varchar(30),
                   City         varchar(20))
    GO
    CREATE TABLE CustOrder(
                   CustomerID  varchar(5) references Cust (CustomerID),
                   OrderID     varchar(5) PRIMARY KEY)
    GO
    
  2. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve SampleSchema.xml kaydedin.Aşağıdaki xsd şema dosyasına ekleyin:

    <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="CustCustOrder"
              parent="Cust"
              parent-key="CustomerID"
              child="CustOrder"
              child-key="CustomerID" />
      </xsd:appinfo>
    </xsd:annotation>
      <xsd:element name="ROOT" sql:is-constant="true" >
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element ref="Customers" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="Customers" sql:relation="Cust" >
       <xsd:complexType>
         <xsd:sequence>
           <xsd:element name="CustomerID"  type="xsd:integer" />
           <xsd:element name="CompanyName" type="xsd:string" />
           <xsd:element name="City"        type="xsd:string" />
           <xsd:element name="Order" 
                              sql:relation="CustOrder"
                              sql:relationship="CustCustOrder" >
             <xsd:complexType>
              <xsd:attribute name="OrderID" type="xsd:integer" />
              <xsd:attribute name="CustomerID" type="xsd:integer" />
             </xsd:complexType>
           </xsd:element>
         </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:schema>
    
  3. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve SampleXMLData.xml kaydedin.Aşağıdaki xml belge dosyasına ekleyin:

    <ROOT>
      <Customers>
        <CustomerID>1111</CustomerID>
        <CompanyName>Hanari Carnes</CompanyName>
        <City>NY</City>
        <Order OrderID="1" />
        <Order OrderID="2" />
      </Customers>
    
      <Customers>
        <CustomerID>1112</CustomerID>
        <CompanyName>Toms Spezialitten</CompanyName>
         <City>LA</City>
        <Order OrderID="3" />
      </Customers>
      <Customers>
        <CustomerID>1113</CustomerID>
        <CompanyName>Victuailles en stock</CompanyName>
        <Order OrderID="4" />
    </Customers>
    </ROOT>
    
  4. Visual Basic (standart exe dosyası) uygulama ve Yukarıdaki kod oluşturun.Bu başvuruları projeye ekleyin:

    Microsoft XML BulkLoad for SQL Server 4.0 Type Library
    Microsoft ActiveX Data objects 2.6 Library
    
  5. Uygulama yürütme.

Eşdeğer xdr şeması budur:

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data" 
        xmlns:dt="urn:schemas-microsoft-com:xml:datatypes"  
        xmlns:sql="urn:schemas-microsoft-com:xml-sql" >

   <ElementType name="CustomerID" dt:type="int" />
   <ElementType name="CompanyName" dt:type="string" />
   <ElementType name="City" dt:type="string" />

   <ElementType name="root" sql:is-constant="1">
      <element type="Customers" />
   </ElementType>

   <ElementType name="Customers" sql:relation="Cust"  >
      <element type="CustomerID" sql:field="CustomerID" />
      <element type="CompanyName" sql:field="CompanyName" />
      <element type="City" sql:field="City" />
      <element type="Order" >
         <sql:relationship
                key-relation="Cust"
                key="CustomerID"
                foreign-key="CustomerID"
                foreign-relation="CustOrder" />
      </element>
   </ElementType>
    <ElementType name="Order" sql:relation="CustOrder" >
      <AttributeType name="OrderID" />
      <AttributeType name="CustomerID" />
      <attribute type="OrderID" />
      <attribute type="CustomerID" />
    </ElementType>
</Schema>

J.XML veri türü sütunlarındaki yüklenirken toplu

Eşleme şema belirtir, bir xml veri türü kullanarak sütun sql:datatype="xml" ek açıklama, xml Bulk Load xml alt öğeler için eşlenmiş alan bu sütun. kaynak belgeden kopyalama

Eşler AdventureWorks2008R2 örnek veritabanındaki Production.ProductModel Tablo görünümünü aşağıdaki xsd şeması göz önünde bulundurun.Bu tablo, CatalogDescription alan xml veri türü eşlenen bir <Desc> öğesini kullanarak sql:field ve sql:datatype="xml" ek açıklamalar.

<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
           xmlns:sql="urn:schemas-microsoft-com:mapping-schema"
           xmlns="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription"> 
  <xsd:element name="ProductModel"  sql:relation="Production.ProductModel" >
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="Name" type="xs:string"></xsd:element>
        <xsd:element name="Desc" sql:field="CatalogDescription" sql:datatype="xml">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="ProductDescription">
              <xsd:complexType>
                <xsd:sequence>
                  <xsd:element name="Summary" type="xs:anyType"/>
                </xsd:sequence>
              </xsd:complexType>
            </xsd:element>
          </xsd:sequence>
        </xsd:complexType>
        </xsd:element> 
     </xsd:sequence>
     <xsd:attribute name="ProductModelID" sql:field="ProductModelID" />
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

Bir çalışma örneği sınamak için

  • AdventureWorks2008R2 örnek veritabanı'nın yüklü olduğunu doğrulayın.

Daha fazla bilgi için bkz: AdventureWorks2008R2 örnek veritabanları.

  1. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve SampleSchema.xml kaydedin.xsd şema kopyalayıp dosyaya yapıştırın ve dosyayı kaydedin.

  2. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve SampleXMLData.xml kaydedin.Aşağıdaki xml belgesi kopyalayıp dosyaya yapıştırın ve önceki adımda kullanılan gibi aynı klasöre kaydedin.

    <ProductModel ProductModelID="2005">
        <Name>Mountain-100 (2005 model)</Name>
        <Desc><?xml-stylesheet href="ProductDescription.xsl" type="text/xsl"?>
            <p1:ProductDescription xmlns:p1="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription" 
                  xmlns:wm="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain" 
                  xmlns:wf="https://www.adventure-works.com/schemas/OtherFeatures" 
                  xmlns:html="http://www.w3.org/1999/xhtml" 
                  >
                <p1:Summary>
                    <html:p>Our top-of-the-line competition mountain bike. 
          Performance-enhancing options include the innovative HL Frame, 
          super-smooth front suspension, and traction for all terrain.
                            </html:p>
                </p1:Summary>
                <p1:Manufacturer>
                    <p1:Name>AdventureWorks</p1:Name>
                    <p1:Copyright>2002-2005</p1:Copyright>
                    <p1:ProductURL>HTTP://www.Adventure-works.com</p1:ProductURL>
                </p1:Manufacturer>
                <p1:Features>These are the product highlights. 
                     <wm:Warranty>
                        <wm:WarrantyPeriod>3 years</wm:WarrantyPeriod>
                        <wm:Description>parts and labor</wm:Description>
                    </wm:Warranty><wm:Maintenance>
                        <wm:NoOfYears>10 years</wm:NoOfYears>
                        <wm:Description>maintenance contract available through your dealer or any AdventureWorks retail store.</wm:Description>
                    </wm:Maintenance><wf:wheel>High performance wheels.</wf:wheel><wf:saddle>
                        <html:i>Anatomic design</html:i> and made from durable leather for a full-day of riding in comfort.</wf:saddle><wf:pedal>
                        <html:b>Top-of-the-line</html:b> clipless pedals with adjustable tension.</wf:pedal><wf:BikeFrame>Each frame is hand-crafted in our Bothell facility to the optimum diameter 
          and wall-thickness required of a premium mountain frame. 
          The heat-treated welded aluminum frame has a larger diameter tube that absorbs the bumps.</wf:BikeFrame><wf:crankset> Triple crankset; alumunim crank arm; flawless shifting. </wf:crankset></p1:Features>
                <!-- add one or more of these elements... one for each specific product in this product model -->
                <p1:Picture>
                    <p1:Angle>front</p1:Angle>
                    <p1:Size>small</p1:Size>
                    <p1:ProductPhotoID>118</p1:ProductPhotoID>
                </p1:Picture>
                <!-- add any tags in <specifications> -->
                <p1:Specifications> These are the product specifications.
                       <Material>Almuminum Alloy</Material><Color>Available in most colors</Color><ProductLine>Mountain bike</ProductLine><Style>Unisex</Style><RiderExperience>Advanced to Professional riders</RiderExperience></p1:Specifications>
            </p1:ProductDescription>
        </Desc>
    </ProductModel>
    
  3. Tercih edilen metin veya xml düzenleyicide bir dosya oluşturun ve dosyayı BulkloadXml.vbs kaydedin.Aşağıdaki VBScript kodu kopyalayın ve dosyaya yapıştırın.Önceki xml veri ve şema dosyaları için kullanılan gibi aynı klasöre kaydedin.

    set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkload.4.0")
    objBL.ConnectionString = "provider=SQLOLEDB;data source=MyServer;database=AdventureWorks2008R2;integrated security=SSPI"
    
    Dim fso, sAppPath
    Set fso = CreateObject("Scripting.FileSystemObject") 
    sAppPath = fso.GetFolder(".") 
    
    objBL.ErrorLogFile = sAppPath & "\error.log"
    
    'Execute XML bulkload using file.
    objBL.Execute "SampleSchema.xml", "SampleXMLData.xml"
    set objBL=Nothing
    
  4. BulkloadXml.vbs komut dosyasını yürütün.