sql >> Database teknologi >  >> RDS >> Sqlserver

SSIS læser flere xml-filer fra mappe

Her er en mulig mulighed, som viser, hvordan man indlæser flere XML-filer med samme definition i en SQL Server-tabel. Eksemplet bruger SQL Server 2008 R2 og SSIS 2008 R2 . Eksemplet vist her indlæser tre XML-filer i en SQL-tabel ved hjælp af SSIS Data Flow Task ved hjælp af XML Source komponent.

Trin-for-trin proces:

  1. Opret en tabel med navnet dbo.Items ved at bruge scriptet givet under SQL Scripts sektion.
  2. Opret en XSD-fil med navnet Items.xsd i mappestien C:\temp\xsd ved at bruge indholdet under XSD-fil sektion.
  3. Opret tre XML-filer, nemlig Items_1.xml , Items_2.xml og Items_3.xml i mappestien C:\temp\xml ved at bruge indholdet under XML-filer sektion.
  4. Opret 3 variabler på pakken, nemlig FileExtension , FilePath og FolderPath som vist på skærmbillede #1 .
  5. Opret en OLE DB-forbindelse med navnet SQLServer i pakkens forbindelsesadministratorer for at oprette forbindelse til SQL Server Instance som vist på skærmbillede #2 .
  6. Control Flow faneblad, skal du placere en Foreach loop container og en Data Flow Task i Foreach-løkkebeholderen som vist på skærmbillede #3 .
  7. Konfigurer Foreach Loop container som vist på skærmbilleder #4 og #5 .
  8. Dobbeltklik på Data Flow Task for at navigere til Data Flow fanen. Placer en XML Source komponent og en OLE DB Destination som vist på skærmbillede #6 .
  9. Konfigurer XML Source som vist på skærmbillede #7 og #8 . XML-filstien vil blive hentet fra variablen FilePath . Denne variabel vil blive udfyldt af Foreach Loop container . Bemærk: I senere versioner af Visual Studio vil XML-kilden fejl ude på grund af egenskaben ValidateExternalMetadata. For at rette dette, skal du enkelt klikke på "XML-kilde" og derefter Egenskaber og indstille ValidateExternalMetadata til False .
  10. Konfigurer OLE DB Destination som vist på skærmbilleder #9 og #10 .
  11. Skærmbilleder #11 og #12 vis pakkens udførelse.
  12. Skærmbillede #13 viser tabeldataene før pakkeudførelsen. Skærmbillede #14 viser tabeldataene efter pakkeudførelsen. Dataene i tabellen dbo.Items indeholder nu dataene i tre XML-filer.

Håber det hjælper.

SQL-scripts:

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ærmbillede #1:

Skærmbillede #2:

Skærmbillede #3:

Skærmbillede #4:

Skærmbillede #5:

Skærmbillede #6:

Skærmbillede #7:

Skærmbillede #8:

Skærmbillede #9:

Skærmbillede #10:

Skærmbillede #11:

Skærmbillede #12:

Skærmbillede #13:

Skærmbillede #14:




  1. MySql:Begræns opdateringstilladelse på én kolonne i én tabel

  2. Optimer en UNION mysql-forespørgsel

  3. Hvordan viser man mysql blob-billede i html ved hjælp af Vuejs?

  4. Oracle 11g - FOR-løkke, der kun indsætter hverdage i en tabel?