Zde je možná možnost, která ukazuje, jak načíst více souborů XML se stejnou definicí do tabulky serveru SQL. V příkladu je použit SQL Server 2008 R2
a SSIS 2008 R2
. Zde uvedený příklad načte tři soubory XML do tabulky SQL pomocí SSIS Data Flow Task
pomocí XML Source
komponent.
Postup krok za krokem:
- Vytvořte tabulku s názvem
dbo.Items
pomocí skriptu uvedeného v části Skripty SQL sekce. - Vytvořte soubor XSD s názvem
Items.xsd
v cestě ke složce C:\temp\xsd pomocí obsahu poskytnutého v Souboru XSD sekce. - Vytvořte tři soubory XML, jmenovitě
Items_1.xml
,Items_2.xml
aItems_3.xml
v cestě ke složce C:\temp\xml pomocí obsahu poskytnutého v části Soubory XML sekce. - V balíčku vytvořte 3 proměnné, jmenovitě
FileExtension
,FilePath
aFolderPath
jak je znázorněno na snímku obrazovky č. 1 . - Ve správcích připojení balíčku vytvořte připojení OLE DB s názvem
SQLServer
pro připojení k instanci SQL Server, jak je znázorněno na snímku obrazovky č.2 . - Na
Control Flow
umístěteForeach loop container
aData Flow Task
v kontejneru smyčky Foreach, jak je znázorněno na snímku obrazovky č. 3 . - Nakonfigurujte
Foreach Loop container
jak je znázorněno na snímcích obrazovky #4 a #5 . - Dvakrát klikněte na
Data Flow Task
přejděte naData Flow
tab. UmístěteXML Source
aOLE DB Destination
jak je znázorněno na snímku obrazovky č. 6 . - Nakonfigurujte
XML Source
jak je znázorněno na snímku obrazovky č. 7 a #8 . Cesta k souboru XML bude načtena z proměnné FilePath . Tato proměnná bude vyplněnaForeach Loop container
. Poznámka: V novějších verzích sady Visual Studio zdroj XML bude došlo k chybě kvůli vlastnosti ValidateExternalMetadata. Chcete-li to vyřešit, klikněte jednou na „Zdroj XML“ a poté na Vlastnosti a nastavte ValidateExternalMetadata na False . - Nakonfigurujte
OLE DB Destination
jak je znázorněno na snímcích obrazovky #9 a #10 . - Snímky obrazovky č.11 a #12 zobrazit provedení balíčku.
- Snímek obrazovky č.13 zobrazuje data tabulky před provedení balíčku. Snímek obrazovky č.14 zobrazí data tabulky po provedení balíčku. Data v tabulce
dbo.Items
nyní obsahuje data přítomná ve třech souborech XML.
Doufám, že to pomůže.
Skripty 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
Soubor 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>
Soubory 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>
Snímek obrazovky č. 1:
Snímek obrazovky č. 2:
Snímek obrazovky č. 3:
Snímek obrazovky č. 4:
Snímek obrazovky č. 5:
Snímek obrazovky č. 6:
Snímek obrazovky č. 7:
Snímek obrazovky č. 8:
Snímek obrazovky č. 9:
Snímek obrazovky č. 10:
Snímek obrazovky č. 11:
Snímek obrazovky č. 12:
Snímek obrazovky č. 13:
Snímek obrazovky č. 14: