如何使用SSIS

时间:2018-02-14 23:56:38

标签: sql-server excel ssis etl

我被SSIS困住了。当我尝试使用foreach容器循环遍历一个记录集时,我从Excel文件中提取。

Enter image description here

以下是我使用的两个变量:

Enter image description here

我要做的第一件事就是从Excel文件中提取数据,然后将其作为记录集存储到变量“CriteriaResult”中。

Enter image description here

Enter image description here

然后在foreach循环中,我使用ADO枚举器来访问此记录集:

Enter image description here

此记录集中的每条记录都将转换为字符串变量“CriteriaID”:

Enter image description here

然后我将此记录插入SQL Server中的表:

Enter image description here

参数设置与SQL Server表中列的数据类型相同:

Enter image description here

但是,我在foreach循环步骤中收到错误:

Enter image description here

  

错误:获取Excel数据时的0xC001F009:分配给变量“User :: CriteriaID”的值的类型与当前变量类型不同。变量在执行期间可能不会更改类型。变量类型是严格的,除了Object类型的变量。

Excel文件中的原始数据如下:

Enter image description here

从数字1和2开始,然后更改为3A,3B ....我猜这就是为什么它在foreach循环步骤声明数据类型更改的原因。在循环之前,我可以添加任何脚本任务来格式化记录集中的数据吗?

另一个潜在的问题可能来自合并细胞。但是,之前我尝试过一个单细胞,效果很好。

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

尝试使用表达式而不是传递参数:

  • 不要指定任何参数
  • 转到表达式选项卡→SqlStatement属性
  • 使用以下表达式:

    "INSERT INTO dbo.SSIS (CriteriaID) VALUES(" + @[User::CriteriaID] + ")"