我正在做一个SSIS包,它将从SQL表读取数据并为一个国家的每个城市创建一个Excel文件,该文件将保留该城市的所有信息。我的问题是如何创建大约175个Excel文件,我知道如何使用条件分割创建2或3?但是175
答案 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存储在相应的包变量中
5)你可以在内部循环容器中进行以下操作:
5a)在文件系统任务的帮助下准备空文件 - 您将复制xls_layout_file以动态设置xls_current_file(例如,您将准备具有城市名称的目标文件) - 请参阅表达式以设置连接字符串(路径)
5b)在数据流任务
中作为当前城市的源查询数据,借助cityID和 参数化查询
必要时使用转换(例如转换代码页excel能够处理 - 这与数据库的collaton有关 - 我们用来进行本地整理 - 例如Sloval_CI_AS)
将xls文件设置为目标,并将连接字符串dynamicaly设置为xls_current_path(借助表达式)