从Excel工作表和聚合数据填充的SSIS变量

时间:2015-11-17 16:59:34

标签: excel ssis

我有一张包含SQL查询数据的Excel表格。我需要对值进行一些聚合以获得最小和最大年份,以及字段列表中的最小和最大四分之一。我需要根据每年的季度数来计算每年数量的总计数。

 Volume || Start Year ||Start Quarter || End Quarter || End Year
   3          2013           2                4           2016

这些年间的季度差异将为我提供所选年份内所有数量的总数。

我正在尝试为最小和最大年份以及最小和最大季度分配变量以查找卷的总数。是否可以为Excel工作表中的每个项目分配一个SSIS变量,然后计算所选年份的卷数?

1 个答案:

答案 0 :(得分:1)

在SSIS包控制流程中,您可以使用执行SQL任务调用存储过程来完成所有这些操作。从这里可以采取几种方法。

1)应用填充Excel文件的原始SQL查询来填充临时表。使用临时表执行聚合,并将它们输出到可以在执行SQL任务编辑器的结果集中定义的变量。

2)如果应用原始SQL查询不是一个选项而您必须从Excel文件中读取,那么您仍然会应用第一个选项中的建议,但存储过程将应用OPENROWSET命令来调用Excel文件并包含工作表。根据用于创建文件的Excel版本,该命令会略有不同。以下示例基于Excel 2007及更高版本(.xlsx文件扩展名)。为了使其正常工作,您需要在运行SSIS的计算机上安装AccessDatabaseEngine.exe驱动程序。

SELECT * INTO #Temp FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
                             'Excel 12.0 Xml;HDR=YES;Database=C:\folder\MyExcelFile.xlsx', 'SELECT * FROM [Sheet1$]')

以下链接更好地解决了使用OPENROWSET的细节问题。 http://blog.learningtree.com/using-openrowset-to-read-excel-worksheets-from-sql-server-part-2-linked-sql-queries/

以下链接提供了有关设置由执行SQL任务调用的存储过程的一些详细信息,以返回结果集下定义的输出。 SSIS Execute SQL Stored Procedure output parameter type mismatch

希望这有帮助。