【问题标题】:How do I limit the rowcount in an SSIS data flow task?如何限制 SSIS 数据流任务中的行数?
【发布时间】:2011-03-09 09:24:50
【问题描述】:

我有一个 Oracle 源,我正在获取整个表,并且它被复制到一个看起来相同的 SQL Server 2008 表中。只是为了测试,我只想得到表的一个子集。

在旧的 DTS 包中,在数据转换选项下,我可以设置第一个和最后一个记录号,它只会得到那么多记录。

如果我正在执行查询,我可以将其更改为 select top 5000 或在顶部设置 rowcount 5000(也许?这是 Oracle 源代码)。但我抢了整张桌子。

选择Oracle表时如何限制行数?

【问题讨论】:

    标签: sql sql-server oracle sql-server-2008 ssis


    【解决方案1】:

    数据流中的行采样组件限制了行数。只需将其插入源和目标之间并设置行数。对于大量数据和无法修改查询时非常有用。在这个例子中,我在源代码中执行了一个 SP。 See example below

    【讨论】:

      【解决方案2】:

      自从我接触 pl/sql 以来已经有一段时间了,但我认为您可以简单地放置“rownum

      select col1, col2
      from tableA
      where rownum <= 10;
      

      为了将来参考(而且只是因为我最近一直在使用它),DB2 对此的等价物是语句末尾的“仅获取第一个 n”子句:

      select col1, col2
      from tableA
      fetch first 10 only;
      

      希望我没有太离谱。

      【讨论】:

      • 但是,我不是在做查询,我只是在抢桌子。如有必要,我可以将其更改为查询,但有 20 多个字段,我不想识别每个字段。
      【解决方案3】:

      我们可以在数据流中使用 rowcount 组件,然后在加载到目标时在优先约束条件下使 User::rowCount 500 时,进程就会停止将数据插入到目标表中。

      谢谢

      说实话

      【讨论】:

      • 对不起,我以为在控制流中但实际上在数据流中我们不能设置优先约束条件。我会带着样品测试回来。谢谢 prav
      • 好的,想法 1. 如果我们在数字中有源数据PK,我们可以使用拆分条件来使用它。 2. 创建一个具有一个标识列和 PK 表单源的派生表,然后使用 Lookup 方法获取前 X 条记录。 3. 将完整的源数据转储到与源模式相同的派生表中,然后选择 X 条记录作为源。任何更多的想法请让我知道。谢谢 prav
      • 这听起来像是在测试期间限制数量的大量工作。当我完成测试时,我会想要所有数据,但现在不需要所有 400 万条记录(我也不想等待它运行)。
      • 嗨,我们可以在数据流中使用行采样组件来限制传输到目标表所需的行数,如果我们不想要任何限制,我们可以从数据流和直接映射目标列。我测试了这个方法。我觉得工作比以前的想法少。谢谢 prav
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      相关资源
      最近更新 更多