Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SSIS чете множество xml файлове от папка

Ето една възможна опция, която демонстрира как да заредите множество XML файлове с една и съща дефиниция в таблица на SQL Server. Примерът използва SQL Server 2008 R2 и SSIS 2008 R2 . Показаният тук пример зарежда три XML файла в SQL таблица с помощта на SSIS Data Flow Task с помощта на XML Source компонент.

Процес стъпка по стъпка:

  1. Създайте таблица с име dbo.Items като използвате скрипта, даден под SQL скриптове раздел.
  2. Създайте XSD файл с име Items.xsd в пътя на папката C:\temp\xsd като използвате съдържанието, предоставено под XSD файл раздел.
  3. Създайте три XML файла, а именно Items_1.xml , Items_2.xml и Items_3.xml в пътя на папката C:\temp\xml като използвате съдържанието, предоставено под XML файлове раздел.
  4. Върху пакета създайте 3 променливи, а именно FileExtension , FilePath и FolderPath както е показано на екранна снимка #1 .
  5. В мениджърите на връзки на пакета създайте OLE DB връзка с име SQLServer за да се свържете с екземпляра на SQL Server, както е показано на екранна снимка #2 .
  6. В Control Flow раздел, поставете Foreach loop container и Data Flow Task в рамките на контейнера за цикъл Foreach, както е показано на екранна снимка #3 .
  7. Конфигурирайте Foreach Loop container както е показано на екранни снимки #4 и #5 .
  8. Щракнете двукратно върху Data Flow Task за навигиране до Data Flow раздел. Поставете XML Source компонент и OLE DB Destination както е показано на екранна снимка #6 .
  9. Конфигурирайте XML Source както е показано на екранна снимка #7 и #8 . Пътят на XML файла ще бъде извлечен от променливата FilePath . Тази променлива ще бъде попълнена от Foreach Loop container . Забележка: В по-късните версии на Visual Studio XML Source ще грешка поради свойството ValidateExternalMetadata. За да коригирате това, щракнете еднократно върху „XML Source“, след това върху Properties и задайте ValidateExternalMetadata на False .
  10. Конфигурирайте OLE DB Destination както е показано на екранни снимки #9 и #10 .
  11. Екранни снимки #11 и #12 покажете изпълнението на пакета.
  12. Екранна снимка #13 показва данните от таблицатапреди изпълнението на пакета. Екранна снимка #14 показва данните от таблицатаслед изпълнението на пакета. Данните в таблицата dbo.Items сега съдържа данните в три XML файла.

Надявам се, че това помага.

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

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>

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>

Екранна снимка №1:

Екранна снимка №2:

Екранна снимка #3:

Екранна снимка #4:

Екранна снимка №5:

Екранна снимка №6:

Екранна снимка №7:

Екранна снимка #8:

Екранна снимка #9:

Екранна снимка #10:

Екранна снимка #11:

Екранна снимка #12:

Екранна снимка #13:

Екранна снимка #14:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Промяна на колона на таблица за приемане на повече знаци

  2. Как да дешифрирам парола от SQL сървър?

  3. Windows услуга или SQL задача?

  4. Използвайте променлива с TOP в оператора select в SQL Server, без да го правите динамичен

  5. Първи поглед към новия оценител на мощността на SQL Server