2010-06-28 90 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