【问题标题】:SSIS limit number of rows processed in XML Transform?SSIS限制XML转换中处理的行数?
【发布时间】:2012-01-18 15:05:53
【问题描述】:

我正在进行一个项目,需要我使用 SSIS (2005) XML Task 来“展平”传入的(实际上是许多传入的)XML 文件,然后将新创建的 XML 文件导入 SQL Server。

我已经完成了许多文件,但是一些交付的文件非常大,以至于在开发模式下调整 XSL 文件然后等待运行以查看是否创建了所需的“扁平化”XML 文件是不可行的.

SSIS XML 任务有没有办法限制它处理的记录数量,或者有什么方法可以限制这个开发过程?

【问题讨论】:

  • 怎么样?我正在导航到提供的输入文件中的不同级别以使用 xpath 获取我需要的数据项 - 但是如何限制使用 xpath 转换为新文件的数据?
  • 您可以创建一个小测试文件以供重复使用。在您对系统工作感到满意后,您可以使用常规文件来查看它们的性能。
  • 文件太大了——我们不创建这个文件——它来自外部源——在编辑器中加载太大了。
  • @JimEvans 我认为 RU 建议的重点是您不必使用“真实”文件进行开发。我相信他建议您创建一个包含一个或多个小测试 XML 文件的测试套件,这些文件代表您将实际加载的文件。您仅使用小文件进行开发,如果您的包成功加载它们,则认为它已准备好投入生产。如果包在生产中失败,您更新您的测试用例并重复该过程,直到您的测试套件涵盖您需要测试的所有条件。
  • @Pondlife - 是的,这是一个想法。我最初的问题仍然是我想知道的 - 有没有办法限制转换产生的行数?不过,我会为他指出一个建议:)

标签: sql-server xml xslt ssis


【解决方案1】:

首先回答实际问题:不。XML 任务无法限制通过其转换的行数。它必须使用传递给它的整个 XML 文档以确保它是有效的。

两种解决方法:

下载 XML 文件并编写一个脚本任务,打开文件并使用 LINQ 或 XMLDocument 功能将 XML 文档过滤到更易于管理的元素数量,然后将该文档保存回临时文件位置 将其存储到字符串类型的 SSIS 变量中。

或者,您也可以下载 XML 文件并使用 SQL 的 OPENXML 功能和 FOR XML 子句将执行 SQL 任务中的 XML 返回到变量并将其用作源。但这样做的主要缺点是打开 XML 文档、过滤它并以相同格式返回它要复杂得多。

然后只需使用该新文件(或 SSIS 变量)作为 XML 任务中的源。

【讨论】:

  • 我最终在 SSIS 包中放置了一个脚本任务并使用 vb.net 进行转换 - 效果很好,它消除了 SSIS 的限制。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多