SSIS 2008 - 将xml文件内容导入sql server

时间:2010-06-28 19:16:20

标签: sql-server xml ssis

我想获取一系列xml文件,并将文件的xml拉入数据库中的表中。我有一个用于每个文件枚举器,然后是一个xml任务来提取dtd并将内容放在一个变量中。现在我有一个变量中的文件名和内容,我需要将两个数据插入到数据库中。

我存储数据的表格如下:

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

我无法让它工作,因为我的执行sql任务中没有hte xml数据类型。关于如何使这项工作的任何想法?

5 个答案:

答案 0 :(得分:2)

我会看看导入列转换。它允许您为数据流中的每一行导入文件的内容。数据源只是每个文件的列表以及您需要的任何其他列级元数据。

这可能比从spro

逐行插入更高效

有关在此设置此内容的更多信息:

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

答案 1 :(得分:1)

您是否尝试过使用字符串数据类型?

答案 2 :(得分:1)

如前所述,将proc更改为接受字符串数据类型varchar(max)并在proc中转换为xml,如果必须将其存储在xml列中

答案 3 :(得分:-1)

我不使用执行SQL任务,而是使用XML源 - 生成所需的所有字段到列中,然后使用OLE DB目标将它们传递到数据库表中。这样你甚至不必使用你的存储过程,因为SSIS已经为你做了这些插入,它会识别你的xml类型。

答案 4 :(得分:-1)

我必须使用脚本任务并通过代码调用sproc。