Her er en mulig mulighed, som viser, hvordan man indlæser flere XML-filer med samme definition i en SQL Server-tabel. Eksemplet bruger SQL Server 2008 R2
og SSIS 2008 R2
. Eksemplet vist her indlæser tre XML-filer i en SQL-tabel ved hjælp af SSIS Data Flow Task
ved hjælp af XML Source
komponent.
Trin-for-trin proces:
- Opret en tabel med navnet
dbo.Items
ved at bruge scriptet givet under SQL Scripts sektion. - Opret en XSD-fil med navnet
Items.xsd
i mappestien C:\temp\xsd ved at bruge indholdet under XSD-fil sektion. - Opret tre XML-filer, nemlig
Items_1.xml
,Items_2.xml
ogItems_3.xml
i mappestien C:\temp\xml ved at bruge indholdet under XML-filer sektion. - Opret 3 variabler på pakken, nemlig
FileExtension
,FilePath
ogFolderPath
som vist på skærmbillede #1 . - Opret en OLE DB-forbindelse med navnet
SQLServer
i pakkens forbindelsesadministratorer for at oprette forbindelse til SQL Server Instance som vist på skærmbillede #2 . - På
Control Flow
faneblad, skal du placere enForeach loop container
og enData Flow Task
i Foreach-løkkebeholderen som vist på skærmbillede #3 . - Konfigurer
Foreach Loop container
som vist på skærmbilleder #4 og #5 . - Dobbeltklik på
Data Flow Task
for at navigere tilData Flow
fanen. Placer enXML Source
komponent og enOLE DB Destination
som vist på skærmbillede #6 . - Konfigurer
XML Source
som vist på skærmbillede #7 og #8 . XML-filstien vil blive hentet fra variablen FilePath . Denne variabel vil blive udfyldt afForeach Loop container
. Bemærk: I senere versioner af Visual Studio vil XML-kilden fejl ude på grund af egenskaben ValidateExternalMetadata. For at rette dette, skal du enkelt klikke på "XML-kilde" og derefter Egenskaber og indstille ValidateExternalMetadata til False . - Konfigurer
OLE DB Destination
som vist på skærmbilleder #9 og #10 . - Skærmbilleder #11 og #12 vis pakkens udførelse.
- Skærmbillede #13 viser tabeldataene før pakkeudførelsen. Skærmbillede #14 viser tabeldataene efter pakkeudførelsen. Dataene i tabellen
dbo.Items
indeholder nu dataene i tre XML-filer.
Håber det hjælper.
SQL-scripts:
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
XSD-fil
<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>
XML-filer
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>
Skærmbillede #1:
Skærmbillede #2:
Skærmbillede #3:
Skærmbillede #4:
Skærmbillede #5:
Skærmbillede #6:
Skærmbillede #7:
Skærmbillede #8:
Skærmbillede #9:
Skærmbillede #10:
Skærmbillede #11:
Skærmbillede #12:
Skærmbillede #13:
Skærmbillede #14: