2010-06-28 59 views
2

我想獲取一系列xml文件並將該文件的xml文件拖入數據庫中的表中。我有一個爲每個文件枚舉器,然後一個XML任務拉出dtd並把內容放入一個變量。既然我有一個變量的文件名和內容,我需要將兩條數據都插入到數據庫中。SSIS 2008 - 將xml文件內容導入sql服務器

我來存儲數據表看起來像這樣:

create table Import_Files 
(
    SequenceId    int    IDENTITY(1,1) NOT NULL, 
    FileName    varchar(200) NOT NULL, 
    FileXml     xml    NOT NULL, 
    Created     datetime  DEFAULT(GETDATE()) NOT NULL, 
    Processed    bit    DEFAULT(0) NOT NULL 
) 

我的存儲過程:

CREATE PROCEDURE [dbo].[AddFile] 
    @FileName varchar(200), 
    @FileXml xml 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    --Add new record 
    INSERT INTO Import_Files 
    ([FileName], FileXml) 
    VALUES 
    (@FileName, @FileXml) 

END 

我不能讓它工作,因爲興田XML數據類型不在可用我的執行sql任務。關於如何使這項工作的任何想法?

回答

-1

我不得不使用腳本任務和呼叫通過代碼的sproc。

+0

這不是SSIS應該如何工作的。 – nttakr 2011-07-03 00:41:46

1

您是否嘗試過使用字符串數據類型?

-1

而不是使用執行SQL任務,我會使用一個XML源 - 生成所有字段,你想成列,然後通過使用OLE DB目標傳遞到數據庫表中。這樣,您甚至不必使用存儲過程,因爲SSIS已經爲您執行了這些插入操作,並且它會識別您的xml類型。

+0

-1:它看起來像他希望整個存儲在XML列中的XML文件。 – 2010-06-28 19:28:58

+0

@John:當我看到關於將數據從文件中拉出的部分時,我誤解了這一點,這正是我所描述的。 – ajdams 2010-06-28 21:06:00

1

正如前面sugested改變PROC接受一個字符串數據類型爲varchar(max)和做一個轉換在proc爲xml,如果你必須將它保存在一個XML列

2

我會看看導入列轉換。它允許您爲數據流中的每一行導入文件的內容。數據源只是每個文件和您需要的任何其他列級元數據的列表。

這很可能是更好的性能,然後做逐行插入來自SPRO

更多信息在這裏設置此功能:

http://msdn.microsoft.com/en-us/library/ms141262.aspx