sql >> Databasteknik >  >> RDS >> Sqlserver

SSIS läser flera xml-filer från mappen

Här är ett möjligt alternativ som visar hur man laddar flera XML-filer med samma definition i en SQL Server-tabell. Exemplet använder SQL Server 2008 R2 och SSIS 2008 R2 . Exemplet som visas här laddar tre XML-filer till en SQL-tabell med SSIS Data Flow Task med hjälp av XML Source komponent.

Steg-för-steg-process:

  1. Skapa en tabell med namnet dbo.Items med skriptet som anges under SQL-skript avsnitt.
  2. Skapa en XSD-fil med namnet Items.xsd i mappsökvägen C:\temp\xsd använda innehållet som tillhandahålls under XSD-fil avsnitt.
  3. Skapa tre XML-filer, nämligen Items_1.xml , Items_2.xml och Items_3.xml i mappsökvägen C:\temp\xml använda innehållet som tillhandahålls under XML-filer avsnitt.
  4. Skapa tre variabler på paketet, nämligen FileExtension , FilePath och FolderPath som visas i skärmdump #1 .
  5. Skapa en OLE DB-anslutning med namnet SQLServer i paketets anslutningshanterare för att ansluta till SQL Server-instansen som visas i skärmbild #2 .
  6. Control Flow flik, placera en Foreach loop container och en Data Flow Task i Foreach loop-behållaren som visas i skärmbild #3 .
  7. Konfigurera Foreach Loop container som visas i skärmdumpar #4 och #5 .
  8. Dubbelklicka på Data Flow Task för att navigera till Data Flow flik. Placera en XML Source komponent och en OLE DB Destination som visas i skärmbild #6 .
  9. Konfigurera XML Source som visas i skärmdump #7 och #8 . XML-filsökvägen kommer att hämtas från variabeln FilePath . Denna variabel kommer att fyllas i av Foreach Loop container . Obs! I senare versioner av Visual Studio kommer XML-källan fel ute på grund av egenskapen ValidateExternalMetadata. För att åtgärda detta, enkelklicka på "XML-källa" och sedan på Egenskaper och ställ in ValidateExternalMetadata till False .
  10. Konfigurera OLE DB Destination som visas i skärmdumpar #9 och #10 .
  11. Skärmbilder #11 och #12 visa paketets körning.
  12. Skärmdump #13 visar tabelldata före paketkörningen. Skärmbild #14 visar tabelldata efter paketkörningen. Data i tabellen dbo.Items innehåller nu data som finns i tre XML-filer.

Hoppas det hjälper.

SQL-skript:

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

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

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>

Skärmdump #1:

Skärmdump #2:

Skärmdump #3:

Skärmdump #4:

Skärmdump #5:

Skärmdump #6:

Skärmdump #7:

Skärmdump #8:

Skärmdump #9:

Skärmdump #10:

Skärmdump #11:

Skärmdump #12:

Skärmdump #13:

Skärmdump #14:




  1. Varför är SQL NOT IN så långsam?

  2. Intervaller specificerade enligt kolumnvärden i PostgreSQL

  3. Vad händer om en trigger misslyckas?

  4. Verktyg för att generera ett databasdiagram/ER-diagram från befintlig Oracle-databas?