我想获取一系列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数据类型。关于如何使这项工作的任何想法?
答案 0 :(得分:2)
我会看看导入列转换。它允许您为数据流中的每一行导入文件的内容。数据源只是每个文件的列表以及您需要的任何其他列级元数据。
这可能比从spro
逐行插入更高效有关在此设置此内容的更多信息:
答案 1 :(得分:1)
您是否尝试过使用字符串数据类型?
答案 2 :(得分:1)
如前所述,将proc更改为接受字符串数据类型varchar(max)并在proc中转换为xml,如果必须将其存储在xml列中
答案 3 :(得分:-1)
我不使用执行SQL任务,而是使用XML源 - 生成所需的所有字段到列中,然后使用OLE DB目标将它们传递到数据库表中。这样你甚至不必使用你的存储过程,因为SSIS已经为你做了这些插入,它会识别你的xml类型。
答案 4 :(得分:-1)
我必须使用脚本任务并通过代码调用sproc。