微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SSIS执行SQL任务包含插入并选择

如何解决SSIS执行SQL任务包含插入并选择

我试图读取文件名,然后将一行中的每个名称与另一个相似的单元格值一起输入到另一个表列。在For Each循环中,然后有Execute sql Task。当前,任务设置为直接输入。这是问题脚本

INSERT INTO TableB
                  (LoopValue,Columnvalue)
VALUES     (?,N'Select Columnvalue from TableA where Columnvalue like ?')

解决方法

按照我的理解,每个循环都有一个文件?当遇到这种情况时,我只需使用foreach循环的“变量映射”设置(索引为0)将当前文件映射到fileName变量即可。

然后,我使用派生列(仅是您的fileName变量)创建数据流任务。如果我理解正确的话,将其与OLE DB目标结合使用足以将值插入表中。

编辑: 哦,你也想创建一个字符串?您可以使用表达式任务在控制流中实现这一目标。分配一个字符串变量,例如“ queryString”,然后具有:

@queryString = "Select " + @[User::fileName] + " from Table B" 

或类似的内容,即使用“”插入“硬编码”值,并在变量后面加上+,以连接变量。然后,您也可以在数据流中为@queryString变量使用派生列。

,

如果我能理解要插入到TableB中的内容,那么您将关闭,从TableA中选择记录,其中ColumnValue就像传入的值。

您现在拥有的方式是将Select Columnvalue from TableA where Columnvalue like ?的文字字符串插入表中。

像这样调整您的陈述:

INSERT INTO TableB (LoopValue,Columnvalue)
SELECT ?,Columnvalue  FROM TableA WHERE Columnvalue LIKE '%' + ? + '%' --% is a wildcard.   If you only want those that begin or end then remove one or the other %

然后确保您输入的值是两次。由于存在多个与参数数量有关的?,但是由于在两个不同的地方使用了相同的值,因此您可以将其传递两次:

enter image description here

然后,参数名称将以0开头,并递增以与语句中的?匹配。根据您的连接类型,可能会有所不同,以下文档中有一节告诉您Execute SQL Task

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。