2011-11-05 90 views
2

我已经创建了一个包来从两个SQL Server表中获取数据,并使用合并连接合并此数据,然后将结果存储到Excel目标中。如何覆盖SSIS中的Excel目标?

它第一次正常工作。第二次将重复的数据存储在Excel文件中。

如何覆盖Excel文件行?

+1

您是否想要始终创建新文件,或者:插入新行,删除不存在的行并更新目标excel中的现有行? –

回答

5

不幸的是,Excel连接管理器没有允许覆盖数据的设置。您需要使用控制流中的文件系统任务设置一些文件操作。

有几种可能性,这里有其中之一。您可以创建一个模板文件(其中只包含带有标题的工作表),并且在数据流转换之前,文件系统任务将其复制到先前导出的文件上。

The File System Task (MSDN)

+0

很好的解决方法,+1! – Josien

7

是的,可能!

这里是解决方案:

首先去你的Excel目标点击旁边的Excel工作表的名称新建按钮,复制里面的DML查询。 然后将一个执行SQL任务放入您的控制流中,并将其连接到包含Excel目标的数据流。将连接类型设置到Excel,设置连接到你的Excel目标的Excel连接管理器,进入SQL语句和类型:

Drop TABLE `put the name of the sheet in the excel query you just copied` 
Go 

最后贴上后查询。

这是解决问题所需的一切。

您可以参考此链接为一个完整的信息: http://dwhanalytics.wordpress.com/2011/04/07/ssis-dynamically-generate-excel-tablesheet/

+2

虽然这个链接可能回答这个问题,但最好在这里包含答案的基本部分,并提供参考链接。如果链接页面更改,则仅链接答案可能会失效。 –

+0

@GergoErdosi,答案相应修改。 – Jami

+0

@GergoErdosi,我回答了这个问题,它确实有效。然而,我没有得到奖励,我失去了积分!这是不公平的,是吗? :) – Jami

1

对于Excel会追加数据。没有这样的选项可用于覆盖数据。

您必须通过文件系统任务删除并重新创建文件。

2

是的,可能!

使用SSIS就可以解决这个问题:

首先,在一个位置和包装箱一个Excel格式文件(使用Excel连接管理器结构格式)创建使用文件系统,Excel文件的副本TASK另一个位置,并确保SET Is-Overwrite = True,并使用数据流任务将数据插入新文件复制文件。只要我们想要插入数据,它将创建空白的Excel文件,然后加载数据

+0

优秀建议 - 在盒子外面思考!谢谢你manoj。 – AeyJey