首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

XML 匯入 SQL Server 2000 三大方法:大量載入 COM、textcopy、DTS 完整比較

     編輯:關於SqlServer

將 XML 檔案匯入 SQL Server 2000 有三種主流管道,依據「是否需解析到關聯表」、「效能需求」、「開發複雜度」擇一採用。

方法一:SQLXML 3.0 SP1 大量載入 COM 介面 (最高效能、支援 Schema 對應)

  • 適用:大量 XML 需拆解至多張關聯表、需 XSD/映射 Schema 驗證
  • 元件:SQLXMLBulkLoad 物件 (含於 SQLXML 3.0 SP1)
  • 流程:建立映射 Schema (.xsd + .xml) → 實例化 BulkLoad → 設定連線/交易/錯誤處理 → Execute
  • 優點:串流處理、低記憶體、支援身分識別/外鍵維護、可平行化

VB6 範例碼

Dim bl As New SQLXMLBulkLoad3
bl.ConnectionString = "Provider=SQLOLEDB;Data Source=.;Initial Catalog=MyDB;UID=sa;PWD=xxx"
bl.ErrorLogFile = "C:\Logs\xml_err.log"
bl.KeepIdentity = True
bl.Execute "C:\Maps\CustomerMap.xml", "C:\Data\Customers.xml"
Set bl = Nothing

方法二:textcopy.exe 命令列工具 (單欄位二進位/文字大物件)

  • 適用:整個 XML 當作單一 text/ntext/image 欄位存入、不需解析結構
  • 位置:C:\Program Files\Microsoft SQL Server\80\Tools\Binn\textcopy.exe
  • 語法:
textcopy /S server /U sa /P pwd /D db /T table /C column /W "WHERE id=1" /I "C:\data.xml" /F 1
  • /F 1 表示輸入 (Import),/F 0 為輸出
  • 優點:零開發、適合遷移/備份單一欄位大物件

方法三:DTS (Data Transformation Services) + ActiveX Script (彈性最高、開發量大)

  • 適用:XML 結構簡單、需自訂剖析邏輯、一次性匯入、團隊熟悉 DTS
  • 步驟:
  1. 建立 DTS 套件 → 「轉換資料」任務
  2. 來源:選「文字檔」指向 .xml
  3. 目的地:SQL Server 目標資料表
  4. 轉換頁籤 → 「ActiveX Script」剖析 < > 標籤,擷取屬性/元素值對應欄位
  5. 儲存套件 → 排程/手動執行

優點:視覺化、可混合多來源、支援查詢/查找轉換;缺點:效能較差、維護困難、DTS 已淘汰 (SQL 2005+ 改 SSIS)。

快速選型表

需求推薦方法關鍵依據
大量 XML → 多表關聯、需 Schema 驗證、高效能SQLXML Bulk Load串流、低記憶體、原生對應
整份 XML 存單一欄位 (text/image)textcopy.exe零代碼、命令列自動化
簡單 XML、一次性、需複雜自訂邏輯DTS + ActiveX視覺化、彈性
SQL 2005+ 環境SSIS + XML 來源/ XML 任務原生支援、XSLT/XPath、效能更強

現代化建議 (SQL 2005 以上)

  • 使用 OPENROWSET(BULK ...) + INSERT ... SELECT ... FROM OPENXML 或 nodes() 方法
  • 範例:INSERT INTO Tbl SELECT x.value('@id','int'), x.value('name[1]','varchar(50)') FROM @xml.nodes('/root/item') AS T(x)
  • SSIS 「XML 來源」元件可直接對應 XSD 產生資料流,無需寫碼
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved