Đây là một tùy chọn khả thi trình bày cách tải nhiều tệp XML có cùng định nghĩa vào một bảng SQL Server. Ví dụ sử dụng SQL Server 2008 R2
và SSIS 2008 R2
. Ví dụ được hiển thị ở đây tải ba tệp XML vào một bảng SQL bằng SSIS Data Flow Task
với sự trợ giúp của XML Source
thành phần.
Quy trình từng bước:
- Tạo một bảng có tên
dbo.Items
sử dụng tập lệnh được cung cấp trong Tập lệnh SQL phần. - Tạo tệp XSD có tên
Items.xsd
trong đường dẫn thư mục C:\ temp \ xsd sử dụng nội dung được cung cấp trong Tệp XSD phần. - Tạo ba tệp XML cụ thể là
Items_1.xml
,Items_2.xml
vàItems_3.xml
trong đường dẫn thư mục C:\ temp \ xml sử dụng nội dung được cung cấp trong Tệp XML phần. - Trên gói, tạo 3 biến là
FileExtension
,FilePath
vàFolderPath
như được hiển thị trong ảnh chụp màn hình # 1 . - Trên Trình quản lý Kết nối của gói, tạo Kết nối OLE DB có tên
SQLServer
để kết nối với Phiên bản máy chủ SQL như được hiển thị trong ảnh chụp màn hình # 2 . - Trên
Control Flow
, đặt mộtForeach loop container
vàData Flow Task
trong vùng chứa vòng lặp Foreach như được hiển thị trong ảnh chụp màn hình # 3 . - Định cấu hình vùng chứa
Foreach Loop container
như được hiển thị trong ảnh chụp màn hình # 4 và # 5 . - Nhấp đúp vào
Data Flow Task
để điều hướng đếnData Flow
chuyển hướng. Đặt mộtXML Source
thành phần và mộtOLE DB Destination
như được hiển thị trong ảnh chụp màn hình # 6 . - Định cấu hình
XML Source
như được hiển thị trong ảnh chụp màn hình # 7 và # 8 . Đường dẫn tệp XML sẽ được truy xuất từ biến FilePath . Biến này sẽ được điền bởiForeach Loop container
. Lưu ý: Trong các phiên bản mới hơn của Visual Studio, Nguồn XML sẽ lỗi do thuộc tính ValidateExternalMetadata. Để khắc phục điều này, hãy nhấp một lần vào "Nguồn XML" sau đó nhấp vào Thuộc tính và đặt ValidateExternalMetadata thành False . - Định cấu hình
OLE DB Destination
như được hiển thị trong ảnh chụp màn hình # 9 và # 10 . - Ảnh chụp màn hình # 11 và # 12 hiển thị quá trình thực thi gói.
- Ảnh chụp màn hình # 13 hiển thị dữ liệu bảng trước việc thực hiện gói. Ảnh chụp màn hình # 14 hiển thị dữ liệu bảng sau việc thực hiện gói. Dữ liệu trong bảng
dbo.Items
hiện chứa dữ liệu có trong ba tệp XML.
Hy vọng điều đó sẽ hữu ích.
Tập lệnh SQL:
CREATE TABLE [dbo].[Items](
[Id] [int] IDENTITY(1,1) NOT NULL,
[ItemNumber] [nvarchar](50) NOT NULL,
[ItemName] [nvarchar](60) NOT NULL,
[Price] [numeric](18, 2) NOT NULL,
CONSTRAINT [PK_Items] PRIMARY KEY CLUSTERED ([Id] ASC)) ON [PRIMARY]
GO
Tệp XSD
<xsd:schema xmlns:schema="ItemsXSDSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sqltypes="http://schemas.microsoft.com/sqlserver/2004/sqltypes" targetNamespace="ItemsXSDSchema" elementFormDefault="qualified">
<xsd:import namespace="http://schemas.microsoft.com/sqlserver/2004/sqltypes" schemaLocation="http://schemas.microsoft.com/sqlserver/2004/sqltypes/sqltypes.xsd" />
<xsd:element name="Items">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="unbounded" name="Item">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Id" type="sqltypes:int" />
<xsd:element name="ItemNumber">
<xsd:simpleType>
<xsd:restriction base="sqltypes:nvarchar" sqltypes:localeId="1033" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth" sqltypes:sqlSortId="52">
<xsd:maxLength value="20" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ItemName">
<xsd:simpleType>
<xsd:restriction base="sqltypes:nvarchar" sqltypes:localeId="1033" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth" sqltypes:sqlSortId="52">
<xsd:maxLength value="60" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Price">
<xsd:simpleType>
<xsd:restriction base="sqltypes:numeric">
<xsd:totalDigits value="18" />
<xsd:fractionDigits value="2" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Tệp XML
Items_1.xml
<?xml version="1.0"?>
<Items xmlns="ItemsXSDSchema">
<Item>
<Id>1</Id>
<ItemNumber>I2345343</ItemNumber>
<ItemName>Monitor</ItemName>
<Price>299.99</Price>
</Item>
</Items>
Items_2.xml
<?xml version="1.0"?>
<Items xmlns="ItemsXSDSchema">
<Item>
<Id>1</Id>
<ItemNumber>J1231231</ItemNumber>
<ItemName>Mouse</ItemName>
<Price>29.99</Price>
</Item>
</Items>
Items_3.xml
<?xml version="1.0"?>
<Items xmlns="ItemsXSDSchema">
<Item>
<Id>1</Id>
<ItemNumber>K0456212</ItemNumber>
<ItemName>Keyboard</ItemName>
<Price>49.99</Price>
</Item>
</Items>
Ảnh chụp màn hình # 1:
Ảnh chụp màn hình # 2:
Ảnh chụp màn hình # 3:
Ảnh chụp màn hình # 4:
Ảnh chụp màn hình # 5:
Ảnh chụp màn hình # 6:
Ảnh chụp màn hình # 7:
Ảnh chụp màn hình # 8:
Ảnh chụp màn hình # 9:
Ảnh chụp màn hình # 10:
Ảnh chụp màn hình # 11:
Ảnh chụp màn hình # 12:
Ảnh chụp màn hình # 13:
Ảnh chụp màn hình # 14: