Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SSIS đọc nhiều tệp xml từ thư mục

Đây là một tùy chọn khả thi trình bày cách tải nhiều tệp XML có cùng định nghĩa vào một bảng SQL Server. Ví dụ sử dụng SQL Server 2008 R2SSIS 2008 R2 . Ví dụ được hiển thị ở đây tải ba tệp XML vào một bảng SQL bằng SSIS Data Flow Task với sự trợ giúp của XML Source thành phần.

Quy trình từng bước:

  1. Tạo một bảng có tên dbo.Items sử dụng tập lệnh được cung cấp trong Tập lệnh SQL phần.
  2. Tạo tệp XSD có tên Items.xsd trong đường dẫn thư mục C:\ temp \ xsd sử dụng nội dung được cung cấp trong Tệp XSD phần.
  3. Tạo ba tệp XML cụ thể là Items_1.xml , Items_2.xmlItems_3.xml trong đường dẫn thư mục C:\ temp \ xml sử dụng nội dung được cung cấp trong Tệp XML phần.
  4. Trên gói, tạo 3 biến là FileExtension , FilePathFolderPath như được hiển thị trong ảnh chụp màn hình # 1 .
  5. Trên Trình quản lý Kết nối của gói, tạo Kết nối OLE DB có tên SQLServer để kết nối với Phiên bản máy chủ SQL như được hiển thị trong ảnh chụp màn hình # 2 .
  6. Trên Control Flow , đặt một Foreach loop containerData Flow Task trong vùng chứa vòng lặp Foreach như được hiển thị trong ảnh chụp màn hình # 3 .
  7. Định cấu hình vùng chứa Foreach Loop container như được hiển thị trong ảnh chụp màn hình # 4 và # 5 .
  8. Nhấp đúp vào Data Flow Task để điều hướng đến Data Flow chuyển hướng. Đặt một XML Source thành phần và một OLE DB Destination như được hiển thị trong ảnh chụp màn hình # 6 .
  9. Định cấu hình XML Source như được hiển thị trong ảnh chụp màn hình # 7 và # 8 . Đường dẫn tệp XML sẽ được truy xuất từ ​​biến FilePath . Biến này sẽ được điền bởi Foreach Loop container . Lưu ý: Trong các phiên bản mới hơn của Visual Studio, Nguồn XML sẽ lỗi do thuộc tính ValidateExternalMetadata. Để khắc phục điều này, hãy nhấp một lần vào "Nguồn XML" sau đó nhấp vào Thuộc tính và đặt ValidateExternalMetadata thành False .
  10. Định cấu hình OLE DB Destination như được hiển thị trong ảnh chụp màn hình # 9 và # 10 .
  11. Ảnh chụp màn hình # 11 và # 12 hiển thị quá trình thực thi gói.
  12. Ảnh chụp màn hình # 13 hiển thị dữ liệu bảng trước việc thực hiện gói. Ảnh chụp màn hình # 14 hiển thị dữ liệu bảng sau việc thực hiện gói. Dữ liệu trong bảng dbo.Items hiện chứa dữ liệu có trong ba tệp XML.

Hy vọng điều đó sẽ hữu ích.

Tập lệnh 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

Tệp 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>

Tệp 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>

Ảnh chụp màn hình # 1:

Ảnh chụp màn hình # 2:

Ảnh chụp màn hình # 3:

Ảnh chụp màn hình # 4:

Ảnh chụp màn hình # 5:

Ảnh chụp màn hình # 6:

Ảnh chụp màn hình # 7:

Ảnh chụp màn hình # 8:

Ảnh chụp màn hình # 9:

Ảnh chụp màn hình # 10:

Ảnh chụp màn hình # 11:

Ảnh chụp màn hình # 12:

Ảnh chụp màn hình # 13:

Ảnh chụp màn hình # 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. Chèn một danh sách <> vào bảng SQL Server

  2. Chuyển đổi varchar thành thập phân trong SQL Server 2008

  3. Bảng phân vùng và song song SQL Server 2008

  4. SQL Server:Làm thế nào để cho phép các lược đồ?

  5. Làm thế nào để lưu trữ cấu trúc thư mục / phân cấp / cây trong cơ sở dữ liệu?