在清空文件的任务之后执行时,SSIS数据流任务不会将记录写入excel文件

时间:2013-03-26 10:24:59

标签: sql-server excel ssis

我正在编写一个SSIS包来从数据库中提取数据,并每周将其写入excel文件。每次卸载数据时都必须从头开始重新生成excel文件。 我意识到如果我在数据流任务中使用excel目标,我无法覆盖现有文件,所以我尝试执行以下操作:

  1. 在数据卸载之前添加一个执行SQL任务,以使用以下sql重新创建文件中的现有工作表

    DROP TABLE Users$

    GO

    CREATE TABLE Users$ ( Ref NVARCHAR(10), Username NVARCHAR(20), Active INT, Absent INT, Allow Reconciliation NVARCHAR(4), Prefix NVARCHAR(10), First Name NVARCHAR(25), Middle Name NVARCHAR(25), Last Name NVARCHAR(40), Suffix INT, Email NVARCHAR(33), Work Phone NVARCHAR(10), Required Approvals NVARCHAR(1), Division/Section Ref NVARCHAR(15), Grade Ref NVARCHAR(9), Cost Centre Ref NVARCHAR(15), Location Ref NVARCHAR(5), Last Hire Date NVARCHAR(10), Original Hire Date INT, Manager Ref INT, Approver Ref NVARCHAR(6), Gender NVARCHAR(6), Ethnicity NVARCHAR(25), Language NVARCHAR(5), Expiry Date NVARCHAR(10), Staff Category NVARCHAR(50), Source of Funding NVARCHAR(4), BAC Number INT, Title NVARCHAR(50) )

    GO

  2. 保留一个只有列标题的空文件模板,以确保保留列映射,并在数据流任务之前使用脚本任务,用它替换任何现有的输出文件。

  3. 在这两种情况下,包都成功执行,我在日志中看到它说记录被写入excel文件但是当我打开文件时我只看到标题行,没有数据。 我的印象是,当替换文件或重新创建工作表时,列映射会搞乱,我不知道如何继续。

    编辑:我必须提到,单独执行数据流任务最终会写入记录。 请指教 感谢

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案,完全未经测试但应该有效:

  1. 使用脚本任务为变量写入唯一值。我建议使用guid或基于日期/时间的字符串。
  2. 首先执行数据流任务,将数据与guid一起插入单独的列
  3. 在数据流后对excel文件运行脚本任务,删除guid列不等于变量值的行
  4. 唯一的问题是guid将保留在excel文件中。

    希望有所帮助。