如何使用SSIS包将表数据拆分为单独的命名Excel文件?

时间:2009-02-06 16:10:23

标签: sql-server excel ssis

我正在使用SQL Server中的一组数据,我希望将这些数据放入一组Excel文件中。此任务需要自动运行以按月运行。数据看起来像

Site    ID      FirstName   LastName
------  ------- ---------   ---------
North   111     Jim         Smith
North   112     Tim         Johnson
North   113     Sachin      Tedulkar
South   201     Horatio     Alger
South   205     Jimi        Hendrix
South   215     Bugs        Bunny

我希望结果看起来像

In Excel file named North.xls

ID      FirstName   LastName
111     Jim         Smith
112     Tim         Johnson
113     Sachin      Tedulkar

In Excel file named South.xls

ID      FirstName   LastName
201     Horatio     Alger
205     Jimi        Hendrix
215     Bugs        Bunny

“网站”列中有70到100个值,我想拆分。我正在使用SSIS来执行此任务,但在使用OLE DB Source任务从SQL Server中提取数据后,我陷入困境。接下来会发生什么?如果使用其他工具有一种更简单的方法,我也会对此持开放态度。

4 个答案:

答案 0 :(得分:12)

答案 1 :(得分:1)

我认为SSIS是一个很好用的工具,你有几个选择。

基本上,您可以使用多播和条件拆分对象来实现您想要的效果。

我将如何做到这一点:

1)我会创建两个MS Excel文件,其中包含所有数据,我希望看到它。删除数据并将其保留为模板文件,并为完整文件制作副本。

2)在连接管理器中设置与这些文件的文件连接。

3)创建一个文件系统任务,在作业开始时用模板覆盖完整文件(其他方法可以做到这一点,但我最喜欢这个)。

4)添加数据流任务,并在其中放入OLE DB源,多播,两个条件拆分和两个MS Excel目标。

5)配置其中的每一个,你应该完成。配置非常直观,按照我上面的顺序。

答案 2 :(得分:1)

不确定这是否有效,但是将所有条件查询与文件名的另一个字段一起放在表中。然后使用for循环遍历其中的每一个并动态修改转换任务的select子句。 SSIS称这些动态修改为表达式。

您在语句/条件表上执行选择,然后将其放入对象变量中。然后在for循环中使用对象变量。

我唯一不确定的是映射到excel文件名。

编辑:也找到了这个,它使用链接服务器http://codebetter.com/blogs/raymond.lewallen/archive/2005/05/04/62781.aspx

答案 3 :(得分:1)

我发现解决方案问题出在excel目的地。我重新安装了Microsoft访问引擎Redistributable(32位版本)。一切都很好。 我有一个64位和32位的问题他们不兼容,因为我的系统是64位。

相关问题