Här är ett möjligt alternativ som visar hur man laddar flera XML-filer med samma definition i en SQL Server-tabell. Exemplet använder SQL Server 2008 R2
och SSIS 2008 R2
. Exemplet som visas här laddar tre XML-filer till en SQL-tabell med SSIS Data Flow Task
med hjälp av XML Source
komponent.
Steg-för-steg-process:
- Skapa en tabell med namnet
dbo.Items
med skriptet som anges under SQL-skript avsnitt. - Skapa en XSD-fil med namnet
Items.xsd
i mappsökvägen C:\temp\xsd använda innehållet som tillhandahålls under XSD-fil avsnitt. - Skapa tre XML-filer, nämligen
Items_1.xml
,Items_2.xml
ochItems_3.xml
i mappsökvägen C:\temp\xml använda innehållet som tillhandahålls under XML-filer avsnitt. - Skapa tre variabler på paketet, nämligen
FileExtension
,FilePath
ochFolderPath
som visas i skärmdump #1 . - Skapa en OLE DB-anslutning med namnet
SQLServer
i paketets anslutningshanterare för att ansluta till SQL Server-instansen som visas i skärmbild #2 . - På
Control Flow
flik, placera enForeach loop container
och enData Flow Task
i Foreach loop-behållaren som visas i skärmbild #3 . - Konfigurera
Foreach Loop container
som visas i skärmdumpar #4 och #5 . - Dubbelklicka på
Data Flow Task
för att navigera tillData Flow
flik. Placera enXML Source
komponent och enOLE DB Destination
som visas i skärmbild #6 . - Konfigurera
XML Source
som visas i skärmdump #7 och #8 . XML-filsökvägen kommer att hämtas från variabeln FilePath . Denna variabel kommer att fyllas i avForeach Loop container
. Obs! I senare versioner av Visual Studio kommer XML-källan fel ute på grund av egenskapen ValidateExternalMetadata. För att åtgärda detta, enkelklicka på "XML-källa" och sedan på Egenskaper och ställ in ValidateExternalMetadata till False . - Konfigurera
OLE DB Destination
som visas i skärmdumpar #9 och #10 . - Skärmbilder #11 och #12 visa paketets körning.
- Skärmdump #13 visar tabelldata före paketkörningen. Skärmbild #14 visar tabelldata efter paketkörningen. Data i tabellen
dbo.Items
innehåller nu data som finns i tre XML-filer.
Hoppas det hjälper.
SQL-skript:
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ärmdump #1:
Skärmdump #2:
Skärmdump #3:
Skärmdump #4:
Skärmdump #5:
Skärmdump #6:
Skärmdump #7:
Skärmdump #8:
Skärmdump #9:
Skärmdump #10:
Skärmdump #11:
Skärmdump #12:
Skärmdump #13:
Skärmdump #14: