Berikut adalah opsi yang memungkinkan yang menunjukkan cara memuat beberapa file XML yang memiliki definisi yang sama ke dalam tabel SQL Server. Contoh menggunakan SQL Server 2008 R2
dan SSIS 2008 R2
. Contoh yang ditampilkan di sini memuat tiga file XML ke dalam tabel SQL menggunakan Data Flow Task
SSIS dengan bantuan XML Source
komponen.
Proses langkah demi langkah:
- Buat tabel bernama
dbo.Items
menggunakan skrip yang diberikan di bawah Skrip SQL bagian. - Buat file XSD bernama
Items.xsd
di jalur folder C:\temp\xsd menggunakan konten yang disediakan di bawah File XSD bagian. - Buat tiga file XML yaitu
Items_1.xml
,Items_2.xml
danItems_3.xml
di jalur folder C:\temp\xml menggunakan konten yang disediakan di bawah File XML bagian. - Pada package, buat 3 variabel yaitu
FileExtension
,FilePath
danFolderPath
seperti yang ditunjukkan pada tangkapan layar #1 . - Pada Manajer Koneksi paket, buat Koneksi DB OLE bernama
SQLServer
untuk terhubung ke SQL Server Instance seperti yang ditunjukkan pada tangkapan layar #2 . - Pada
Control Flow
tab, tempatkanForeach loop container
danData Flow Task
dalam wadah loop Foreach seperti yang ditunjukkan pada tangkapan layar #3 . - Konfigurasikan
Foreach Loop container
seperti yang ditunjukkan pada tangkapan layar #4 dan #5 . - Klik dua kali pada
Data Flow Task
untuk menavigasi keData Flow
tab. TempatkanXML Source
komponen danOLE DB Destination
seperti yang ditunjukkan pada tangkapan layar #6 . - Konfigurasikan
XML Source
seperti yang ditunjukkan pada tangkapan layar #7 dan #8 . Jalur file XML akan diambil dari variabel FilePath . Variabel ini akan diisi olehForeach Loop container
. Catatan: Dalam versi Visual Studio yang lebih baru, Sumber XML akan error karena properti ValidateExternalMetadata. Untuk memperbaikinya, Klik sekali "XML Source" lalu Properties dan setel ValidateExternalMetadata ke False . - Konfigurasikan
OLE DB Destination
seperti yang ditunjukkan pada tangkapan layar #9 dan #10 . - Tangkapan layar #11 dan #12 tampilkan eksekusi paket.
- Tangkapan layar #13 menampilkan data tabel sebelum eksekusi paket. Tangkapan layar #14 menampilkan data tabel setelah eksekusi paket. Data dalam tabel
dbo.Items
sekarang berisi data yang ada dalam tiga file XML.
Semoga membantu.
Skrip 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
Berkas 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>
File 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>
Item_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>
Tangkapan Layar #1:
Tangkapan Layar #2:
Tangkapan Layar #3:
Tangkapan layar #4:
Tangkapan layar #5:
Tangkapan layar #6:
Tangkapan layar #7:
Tangkapan layar #8:
Tangkapan layar #9:
Tangkapan layar #10:
Tangkapan layar #11:
Tangkapan layar #12:
Tangkapan Layar #13:
Tangkapan layar #14: