【问题标题】:SSIS data flow task does not write records to excel file when executed after tasks that empty the file在清空文件的任务之后执行时,SSIS 数据流任务不会将记录写入 excel 文件
【发布时间】:2013-03-26 10:24:58
【问题描述】:

我正在编写一个 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. 保留一个仅包含列标题的空文件模板,以确保保留列映射,并在数据流任务之前使用脚本任务,用它替换任何现有的输出文件。

    李>

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

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

【问题讨论】:

  • 您是否检查了整个文件。也许它开始在文件中进一步写入记录。

标签: sql-server excel ssis


【解决方案1】:

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

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

唯一的问题是 guid 将保留在 excel 文件中。

希望对您有所帮助。

【讨论】:

  • 好吧,我最终使用了来自 cosyroc 的 Excel Destination Plus 组件,这让它发挥了作用。
猜你喜欢
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多