繁体   English   中英

SSIS执行sql任务参数映射

[英]SSIS execute sql task parameter mapping

我正在尝试使用 SSIS 中的任务执行 sql 脚本。

我的脚本只是在表中插入了一堆 nambe 值对。 例如 -

插入 mytable (name, value) 值 (?, 'value1'), (?, 'value2')

现在,我想将 map 中定义的一个变量 SSIS 映射到上面语句中的参数。 我尝试定义一个标量变量,但我猜 sql 任务不喜欢那样。 哦,插入语句中的所有名称参数都解析为单个变量。

例如我想插入到 mytable (name, value) 值 ('name1', 'value1'), ('name1', 'value2')

当我打开任务的参数映射选项卡时,它希望我将 map 每个参数单独设置为 -

变量名称 - User::Name 方向 - 输入数据类型 - LONG 参数名称 - 0参数大小 - -1

变量名称 - User::Name 方向 - 输入数据类型 - LONG 参数名称 - 1参数大小 - -1

如果一个名称有 5-10 个值,这很快就会变得失控和繁琐,并迫使我为同一个名称添加多个分配。

有没有简单(-ier)的方法来做到这一点?

最简单(也是最可扩展)的方法是使用数据流任务而不是使用执行 SQL 任务。

  1. 添加数据流任务; 我假设您已经为所有变量填充了正确的参数,并且您知道如何将值传递给它们。
  2. 创建一个包含您需要插入的列的虚拟行,因此请使用您最喜欢的任何内容作为源(在此示例中,我使用了 oledb 连接)。 一个很好的提示是定义源中每一列的数据类型,因为您将在目标表中需要它们。 这会将数据流的元数据与插入表(屏幕截图#1 )对齐。
  3. 然后将多播组件添加到数据流。
  4. 对于第一个参数/值,添加一个派生列组件,将其命名干净,然后继续用变量替换参数的内容。
  5. 对于需要添加的每个进一步的参数/值; 复制先前创建的派生列组件,从多播组件添加一个额外的分支,并根据需要继续替换列参数/值。
  6. 添加一个 union all 并加入所有流
  7. 插入表格
  8. 瞧! 截图#2

这种方法的好处是您可以随心所欲地扩展...使用不同的标准验证每个值、修改数据、添加业务规则、丢弃不合规的值(通过检查合规值的全部数量)。 .. !

祝你今天过得愉快!

弗朗西斯科。

PS:我准备了更多的屏幕截图......但是stackoverflow决定我对这个网站太陌生了,不能发布带有图片或两个以上链接的东西(。)哦,好吧......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM