SSIS包将为每个城市自动创建一个excel文件?

时间:2015-01-28 23:03:52

标签: sql excel ssis

我正在做一个SSIS包,它将从SQL表读取数据并为一个国家的每个城市创建一个Excel文件,该文件将保留该城市的所有信息。我的问题是如何创建大约175个Excel文件,我知道如何使用条件分割创建2或3?但是175

1 个答案:

答案 0 :(得分:0)

简短摘要

您将准备查询以获取具有cityID,cityName的数据集,迭代此数据集,对于您将通过cityID获取数据的每个数据集,并将此结果集转换为动态命名的XLS文件。

详细工作流程

1)准备空的xls布局文件,该文件将用于准备其余文件(例如,您设置标题行)

2)准备包变量:

a)城市 - 对象

b)city_id - int

c)city_name - varchar(x)

d)xls_layout_path - 清空xls文件的路径 - 相应地设置你在sql server文件系统上准备文件的位置

e)xls_current_path - 目标路径xls文件 - 借助表达式,您可以设置此文件的动态路径,从而可以将city_id和/或city_name用作文件名的一部分

3) sql查询任务 - 您查询所有城市,例如cityID,cityName。您设置sql查询任务以返回数据集,并将此数据集设置为对象变量 有关详细信息,请参阅此 https://www.simple-talk.com/sql/ssis/ssis-basics-using-the-execute-sql-task-to-generate-result-sets/

4)然后在 Foreach循环容器的帮助下迭代cities变量,从而将cityID和cityName存储在相应的包变量中

http://social.technet.microsoft.com/wiki/contents/articles/5232.ssis-looping-over-object-variables-with-as-ado-enumeration-in-foreach-loop-container.aspx

5)你可以在内部循环容器中进行以下操作:

5a)在文件系统任务的帮助下准备空文件 - 您将复制xls_layout_file以动态设置xls_current_file(例如,您将准备具有城市名称的目标文件) - 请参阅表达式以设置连接字符串(路径)

5b)在数据流任务

  • 作为当前城市的源查询数据,借助cityID和 参数化查询

  • 必要时使用转换(例如转换代码页excel能够处理 - 这与数据库的collat​​on有关 - 我们用来进行本地整理 - 例如Sloval_CI_AS)

  • 将xls文件设置为目标,并将连接字符串dynamicaly设置为xls_current_path(借助表达式)