sql >> Databáze >  >> RDS >> Sqlserver

SSIS čtení více xml souborů ze složky

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:

  1. Vytvořte tabulku s názvem dbo.Items pomocí skriptu uvedeného v části Skripty SQL sekce.
  2. 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.
  3. Vytvořte tři soubory XML, jmenovitě Items_1.xml , Items_2.xml a Items_3.xml v cestě ke složce C:\temp\xml pomocí obsahu poskytnutého v části Soubory XML sekce.
  4. V balíčku vytvořte 3 proměnné, jmenovitě FileExtension , FilePath a FolderPath jak je znázorněno na snímku obrazovky č. 1 .
  5. 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 .
  6. Na Control Flow umístěte Foreach loop container a Data Flow Task v kontejneru smyčky Foreach, jak je znázorněno na snímku obrazovky č. 3 .
  7. Nakonfigurujte Foreach Loop container jak je znázorněno na snímcích obrazovky #4 a #5 .
  8. Dvakrát klikněte na Data Flow Task přejděte na Data Flow tab. Umístěte XML Source a OLE DB Destination jak je znázorněno na snímku obrazovky č. 6 .
  9. 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ěna Foreach 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 .
  10. Nakonfigurujte OLE DB Destination jak je znázorněno na snímcích obrazovky #9 a #10 .
  11. Snímky obrazovky č.11 a #12 zobrazit provedení balíčku.
  12. 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:




  1. Postgres Pomalá skupina podle dotazu s max

  2. Použijte RAND() ve funkci definované uživatelem

  3. Jak mohu získat přístup k příkazovému řádku MySQL pomocí XAMPP pro Windows?

  4. Použijte něco jako TOP s GROUP BY