【问题标题】:SSIS Automate Excel File Generation From DatabaseSSIS 自动从数据库生成 Excel 文件
【发布时间】:2021-09-13 12:27:56
【问题描述】:

我在执行包时遇到了问题。

我做了什么:

我创建了一个模板,其中只有标题,我有一个表“产品”。我尝试使用 excel 模板将数据从“产品”表中插入到 excel 表中。 我使用了 3 个变量。

流程: 文件系统任务 => 数据流任务 => OLE DB 源 => Excel 目标。

错误:

[Excel 目标 [2]] 错误:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80040E37。

[Excel 目标 [2]] 错误:打开“result$”的行集失败。检查对象是否存在于数据库中。

[SSIS.Pipeline] 错误:“Excel 目标”验证失败并返回验证状态“VS_ISBROKEN”。

谢谢

【问题讨论】:

  • VS_ISBROKEN 通常表示列已更改。
  • 感谢@KeithL 的回复 模板和SQL 表中的列名相同。
  • 您在 Excel 中是否有一个标签为结果的选项卡(大小写正确)?顺便说一句,如果您不格式化 excel,将输出写入可以用 excel 打开的 csv 会容易得多。
  • @KeithL 我已经尝试使用选项卡名称“Sheet1”,现在将选项卡名称重命名为“result”(仅用于实验)。实际上我已经按照教程进行操作,所以我想按照他的方式来做。否则我在没有模板的情况下成功地将数据插入到 Excel 工作表中。 youtube.com/…

标签: excel ssis


【解决方案1】:

这是奇迹。我刚刚解决了这个错误...

不需要创建模板(虚拟)excel,只需要3个组件。

1.根据this教程创建Execute SQL Task

当设置除SQLStatement 之外的所有内容时,我建议创建 empty excel 并连接到 OLE DB 源(您的服务器表)。当您添加excel destination 并与excel destination manager 连接时,您将看到VS 询问您是否要创建类似此查询的表(但具有不同的数据类型):

CREATE TABLE `Result` (
    `ColName1` NVARCHAR(255),
    `ColName2` NVARCHAR(255),
    `ColName3` NVARCHAR(255),
    `ColName4` NVARCHAR(255)
)

我不知道我解释得好不好,但是你在教程中有上一步。

2。执行此任务

3.添加Data Flow TaskOLE DB SourceExcel Destination

使用 OLE DB 从 Product 表中选择您需要的所有内容

Excel Destination 与相同的Excel Connection Manager 连接起来,就像在Execute SQL Task 中一样。从下拉列表中选择Result 工作表名称。

当你完成这个删除这个空的excel

4.创建一个包含路径和 excel 文件名的变量

5.根据第一步的教程,单击Excel Connection Manager -> 属性 -> 表达式 -> ...(右侧)-> ExcelFilePath(从下拉列表中)。在第二列写 @[User::YourVariableName]

关键步骤

6.在控制流中,单击Data Flow Task 并在DelayValidation 的属性中设置True



如果您有任何问题,请在下面的评论中写信给我。

【讨论】:

  • 非常感谢@Marko 的回复。我会尝试这个解决方案。其实我一直在关注一个教程。他正在以另一种方式做到这一点。 [youtube.com/…
  • @Learner 那么至少奖励我的努力。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-23
  • 2014-01-08
  • 1970-01-01
  • 2016-07-15
  • 1970-01-01
  • 2010-10-23
  • 1970-01-01
相关资源
最近更新 更多