我正在编写一个SSIS包来从数据库中提取数据,并每周将其写入excel文件。每次卸载数据时都必须从头开始重新生成excel文件。 我意识到如果我在数据流任务中使用excel目标,我无法覆盖现有文件,所以我尝试执行以下操作:
在数据卸载之前添加一个执行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
保留一个只有列标题的空文件模板,以确保保留列映射,并在数据流任务之前使用脚本任务,用它替换任何现有的输出文件。
在这两种情况下,包都成功执行,我在日志中看到它说记录被写入excel文件但是当我打开文件时我只看到标题行,没有数据。 我的印象是,当替换文件或重新创建工作表时,列映射会搞乱,我不知道如何继续。
编辑:我必须提到,单独执行数据流任务最终会写入记录。 请指教 感谢
答案 0 :(得分:0)
一种可能的解决方案,完全未经测试但应该有效:
唯一的问题是guid将保留在excel文件中。
希望有所帮助。