ssis使用sql任务覆盖excel数据

时间:2018-05-15 15:39:21

标签: sql excel ssis

我有一个将数据写入excel目的地的ssis包,我的问题是每次运行包时它都会将数据添加到excel文件的末尾,我希望它清除数据然后插入。所以我在数据流任务之前添加了2个sql任务。第一个删除excel表,第二个创建表,然后数据流任务包含excel连接。

enter image description here

使用以下消息创建sql任务失败了,我对如何解决它感到有点困惑。

ID=1702

问题是因为我删除了控制流中的excel目标,因为当它到达excel目标任务时文件不存在然后创建文件?create sql task使用从excel目标编辑器获取的相同sql到excel表的名称

[Execute SQL Task] Error: Executing the query "CREATE TABLE `Excel Destination 1` (
`Name data..." failed with the following error: "Table 'Excel Destination 1' already exists.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

我还尝试使用文件系统任务将文件复制到新位置,但这不起作用它仍然只是在每次运行时将数据添加到工作表的末尾而不是覆盖

2 个答案:

答案 0 :(得分:0)

使用这种方式覆盖目的地enter image description here

答案 1 :(得分:0)

您是否尝试过将“模板” excel文件用于每次执行并重命名?您可以基于当前e​​xcel文档创建模板,并将其放置在另一个文件夹中。可以使用通用名称(例如模板)或其他名称,只要该名称与每次写入的文件都不相同即可。以下步骤进一步概述了此过程。

  • 使用文件系统任务从上一次执行中删除excel文件。

  • 使用另一个文件系统任务将模板文件复制到计划写入Excel目标位置。

  • 将现在复制的模板文件重命名为Excel Destination中“连接管理器”中使用的文件名。
  • 执行数据流任务以将数据加载到新的Excel文件中。


需要注意的一件事,请确保在首次创建模板时删除Excel文件中包含数据的行。如果仅使用“清除目录”选项,则将在下面附加新数据。