sql >> データベース >  >> RDS >> Sqlserver

フォルダーから複数のxmlファイルを読み取るSSIS

    同じ定義を持つ複数の XML ファイルを SQL Server テーブルにロードする方法を示すオプションを次に示します。この例では、SQL Server 2008 R2 を使用しています および SSIS 2008 R2 .ここに示す例では、SSIS Data Flow Task を使用して 3 つの XML ファイルを SQL テーブルにロードします。 XML Sourceの助けを借りて 成分。

    段階的なプロセス:

    <オール>
  1. dbo.Items という名前のテーブルを作成します SQL スクリプトの下にあるスクリプトを使用する
  2. Items.xsd という名前の XSD ファイルを作成します。 フォルダー パス C:\temp\xsd XSD ファイルで提供されるコンテンツを使用する
  3. Items_1.xml という 3 つの XML ファイルを作成します。 、 Items_2.xml および Items_3.xml フォルダー パス C:\temp\xml XML ファイルで提供されるコンテンツを使用する
  4. パッケージで、FileExtension という 3 つの変数を作成します。 、 FilePath および FolderPath スクリーンショット #1 に示すように .
  5. パッケージの接続マネージャーで、SQLServer という名前の OLE DB 接続を作成します。 スクリーンショット #2 に示すように、SQL Server インスタンスに接続します。 .
  6. Control Flowについて タブで、Foreach loop container を配置します。 および Data Flow Task スクリーンショット #3 に示すように、Foreach ループ コンテナ内で .
  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 ソースはそうします。 ValidateExternalMetadata プロパティによるエラー。これを修正するには、[XML ソース]、[プロパティ] の順にクリックし、ValidateExternalMetadata を False に設定します。 .
  10. OLE DB Destination を構成する スクリーンショット #9 に示すように そして #10 .
  11. スクリーンショット #11 そして #12 パッケージの実行を表示します。
  12. スクリーンショット #13 のテーブル データを表示します パッケージの実行。スクリーンショット #14 の表データを表示します パッケージの実行。テーブル dbo.Items のデータ 現在、3 つの XML ファイルに存在するデータが含まれています。
  13. お役に立てば幸いです。

    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. MySQL挿入エラー:ER_BAD_FIELD_ERROR:「フィールドリスト」の不明な列「2525」

    2. AndroidStudioアセットのsqliteをコピーしても機能しません

    3. phpとjqueryのロケーションファインダースクリプトを使用したインドのピンコードデータベース

    4. 同じテーブルにレコードを挿入するためのINSERTトリガー