Aqui está uma opção possível que demonstra como carregar vários arquivos XML com a mesma definição em uma tabela do SQL Server. O exemplo usa
SQL Server 2008 R2
e SSIS 2008 R2
. O exemplo mostrado aqui carrega três arquivos XML em uma tabela SQL usando SSIS Data Flow Task
com a ajuda de XML Source
componente. Processo passo a passo:
- Crie uma tabela chamada
dbo.Items
usando o script fornecido em Scripts SQL seção. - Crie um arquivo XSD chamado
Items.xsd
no caminho da pasta C:\temp\xsd usando o conteúdo fornecido em Arquivo XSD seção. - Crie três arquivos XML, chamados
Items_1.xml
,Items_2.xml
eItems_3.xml
no caminho da pasta C:\temp\xml usando o conteúdo fornecido em Arquivos XML seção. - No pacote, crie 3 variáveis chamadas
FileExtension
,FilePath
eFolderPath
conforme mostrado na captura de tela #1 . - Nos gerenciadores de conexão do pacote, crie uma conexão OLE DB chamada
SQLServer
para se conectar à instância do SQL Server, conforme mostrado na captura de tela #2 . - No
Control Flow
guia, coloque umForeach loop container
e umaData Flow Task
dentro do contêiner de loop Foreach, conforme mostrado na captura de tela #3 . - Configure o
Foreach Loop container
conforme mostrado nas capturas de tela #4 e #5 . - Clique duas vezes na
Data Flow Task
para navegar até oData Flow
aba. Coloque umaXML Source
componente e umOLE DB Destination
conforme mostrado na captura de tela nº6 . - Configure a
XML Source
conforme mostrado na captura de tela nº7 e #8 . O caminho do arquivo XML será recuperado da variável FilePath . Esta variável será preenchida peloForeach Loop container
. Observação: Em versões posteriores do Visual Studio, XML Source será erro devido à propriedade ValidateExternalMetadata. Para corrigir isso, clique em "Origem XML", depois em Propriedades e defina ValidateExternalMetadata como Falso . - Configure o
OLE DB Destination
conforme mostrado nas capturas de tela #9 e #10 . - Capturas de tela #11 e #12 mostre a execução do pacote.
- Captura de tela #13 mostra os dados da tabela antes a execução do pacote. Captura de tela nº14 mostra os dados da tabela depois a execução do pacote. Os dados na tabela
dbo.Items
agora contém os dados presentes em três arquivos XML.
Espero que ajude.
Scripts 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
Arquivo 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>
Arquivos 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>
Captura de tela nº 1:
Captura de tela nº 2:
Captura de tela nº 3:
Captura de tela nº 4:
Captura de tela nº 5:
Captura de tela nº 6:
Captura de tela nº 7:
Captura de tela nº 8:
Captura de tela nº 9:
Captura de tela nº 10:
Captura de tela nº 11:
Captura de tela nº 12:
Captura de tela nº 13:
Captura de tela nº 14: