Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SSIS odczytuje wiele plików xml z folderu

Oto możliwa opcja, która pokazuje, jak załadować wiele plików XML o tej samej definicji do tabeli SQL Server. W przykładzie użyto SQL Server 2008 R2 i SSIS 2008 R2 . Pokazany tutaj przykład ładuje trzy pliki XML do tabeli SQL za pomocą SSIS Data Flow Task za pomocą XML Source składnik.

Proces krok po kroku:

  1. Utwórz tabelę o nazwie dbo.Items za pomocą skryptu podanego w Skrypty SQL sekcja.
  2. Utwórz plik XSD o nazwie Items.xsd w ścieżce folderu C:\temp\xsd za pomocą treści dostarczonych w Pliku XSD sekcja.
  3. Utwórz trzy pliki XML, a mianowicie Items_1.xml , Items_2.xml i Items_3.xml w ścieżce folderu C:\temp\xml za pomocą treści dostarczonych w Plikach XML sekcja.
  4. W pakiecie utwórz 3 zmienne, a mianowicie FileExtension , FilePath i FolderPath jak pokazano na zrzucie ekranu #1 .
  5. W menedżerach połączeń pakietu utwórz połączenie OLE DB o nazwie SQLServer aby połączyć się z instancją SQL Server, jak pokazano na zrzucie ekranu #2 .
  6. W Control Flow umieść Foreach loop container i Data Flow Task w kontenerze pętli Foreach, jak pokazano na zrzucie ekranu #3 .
  7. Skonfiguruj Foreach Loop container jak pokazano na zrzutach ekranu #4 i #5 .
  8. Kliknij dwukrotnie Data Flow Task aby przejść do Data Flow patka. Umieść XML Source komponent i OLE DB Destination jak pokazano na zrzucie ekranu #6 .
  9. Skonfiguruj XML Source jak pokazano na zrzucie ekranu #7 i #8 . Ścieżka do pliku XML zostanie pobrana ze zmiennej FilePath . Ta zmienna zostanie wypełniona przez Foreach Loop container . Uwaga: W późniejszych wersjach programu Visual Studio źródło XML będzie błąd z powodu właściwości ValidateExternalMetadata. Aby to naprawić, kliknij raz „Źródło XML”, a następnie Właściwości i ustaw ValidateExternalMetadata na Fałsz .
  10. Skonfiguruj OLE DB Destination jak pokazano na zrzutach ekranu #9 i #10 .
  11. Zrzuty ekranu nr 11 i #12 pokaż wykonanie pakietu.
  12. Zrzut ekranu nr 13 pokazuje dane tabeli przed wykonanie pakietu. Zrzut ekranu #14 pokazuje dane tabeli po wykonanie pakietu. Dane w tabeli dbo.Items teraz zawiera dane obecne w trzech plikach XML.

Mam nadzieję, że to pomoże.

Skrypty 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

Plik 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>

Pliki 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>

Zrzut ekranu nr 1:

Zrzut ekranu nr 2:

Zrzut ekranu nr 3:

Zrzut ekranu nr 4:

Zrzut ekranu nr 5:

Zrzut ekranu nr 6:

Zrzut ekranu nr 7:

Zrzut ekranu nr 8:

Zrzut ekranu nr 9:

Zrzut ekranu nr 10:

Zrzut ekranu nr 11:

Zrzut ekranu nr 12:

Zrzut ekranu nr 13:

Zrzut ekranu nr 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. Jak zamienić wartości null na nieznane w instrukcji Select w SQL Server — samouczek SQL Server / TSQL, część 111

  2. @@ROWCOUNT — Uzyskaj liczbę wierszy, których dotyczy ostatnia instrukcja w SQL Server

  3. Znak ucieczki w SQL Server

  4. Wygeneruj klasę z tabeli bazy danych

  5. SQL:Co jest lepsze Bit czy char(1)