【问题标题】:Read for-each-loop container variable in OLEDB source variable windows在 OLEDB 源变量窗口中读取 for-each-loop 容器变量
【发布时间】:2019-09-10 07:21:28
【问题描述】:

我创建了一个名为 QueryTable 的表,其中存储了 4 个 SQL 查询,每个查询都有不同的元数据

我想将这四个查询结果存储在 Excel 工作表中

首先我已经完成了可执行的 SQL 任务,并将连接和结果集配置为完整的结果集、查询语句。

然后打开结果集选项卡并创建 Query_variable 作为对象类型。

2) 拖动 For-Each_loop 容器并在集合部分设置 Foreach ADO Enumerator 并分配 Query_variable

在变量映射部分创建新变量作为字符串类型来存储四个查询。结果。

3)最后添加我一个数据流任务添加OLEDB源配置相同的变量(我已经为每个循环容器提供)。

现在它正在显示我在 User::Variable 中给出的默认值

我可以迭代相同的列数(元数据)查询并存储在 excel 目标中

但问题是当变量进入下一个查询时,该查询包含更少或更多的列。这里包失败无法处理不同的元数据表

请帮帮我,我们可以同时迭代不同的元数据查询并输出正确的输出吗?

我希望我已经解释了我所面临的问题

【问题讨论】:

  • 请帮助 somone...我急切地等待了几个小时....有可能吗?

标签: sql sql-server excel ssis etl


【解决方案1】:

User::Variable 的默认值设置为查询之一,以便BIDS 可以在设计时对其进行验证。

您也可以尝试将“DelayValidation”设置为 true,但在这种情况下这可能还不够。

【讨论】:

  • 感谢@Tab Alleman !!...我可以顺利地迭代相同的列查询,但是当任何查询出现在列数越来越少的可变部分时......这里包失败。 .我们可以迭代吗?
  • 不,您只能迭代具有完全相同列的查询。任何具有不同列的查询都必须有自己的数据流。
  • 是否有任何其他方法可以达到预期结果...这意味着根据客户要求存储不同的元数据查询结果只有一个 Excel 工作表选项卡?
  • 您可能会编写一个脚本任务来完成它。我想不出任何其他方法可以让您使用不同的元数据迭代查询。
【解决方案2】:

将数据流和 for each 循环容器的延迟验证设置为 true。

【讨论】:

  • :抱歉提到这个...已经设置了延迟验证->相同的设置为真..仍然显示相同的错误
  • 您是否尝试过使用 4 个不同的 sql 任务在文件中创建 4 个工作表?
  • 是的,我已经完成了工作正常但无法将所有数据流任务结果存储在一个 Excel 工作表选项卡中...出现覆盖问题...客户希望所有这些查询具有不同列数导致只有一个 excel 工作表选项卡而不是任何其他 excel 选项卡......这是问题......还有其他方法可以实现结果吗?请回复我正在等待方法.....
  • 您试图在一个 Excel 文件中获取 4 个不同的工作表,但每个工作表都有不同的列,对吗?
  • 只能通过为单个文件的每个查询创建多个工作表来完成。
猜你喜欢
  • 2013-08-01
  • 1970-01-01
  • 2013-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多