【问题标题】:Loading data from SAS to Teradata - When is it ready?将数据从 SAS 加载到 Teradata - 什么时候准备好?
【发布时间】:2010-11-10 23:38:03
【问题描述】:

将表从 SAS 加载到 Teradata 时,SAS 会加载数据(通常使用 FASTLOAD 工具),然后继续执行脚本。但是,我经常遇到严重错误,因为 SAS 说数据已加载,但 Teradata 仍在表中组装数据。

所以数据在数据库中,但还没有准备好使用。我还没有找到一种方法来知道数据是否已准备好与其他表一起处理。我已经成功地使用了 sleep 命令,但这是任意且不可靠的(因为谁知道需要多长时间)。

你会如何解决这个问题?

【问题讨论】:

  • 我在 Sybase 上遇到过类似的问题,除了在访问数据库之前等待/做一些其他事情之外,没有找到任何其他解决方案。
  • 如果您在快速加载结束后立即从目标表中选择,您可能会收到“数据仍在加载”响应。因此,正如 Koskinen 先生所建议的那样,循环等待,直到返回一行。

标签: sql sas etl teradata


【解决方案1】:

你能不能睡觉,尝试查询,捕捉任何错误并循环直到准备好?

【讨论】:

  • 问题是,查询不会出错。所以我没有条件循环。
【解决方案2】:

完善 Jon 的答案,您可能希望查看查询处理是否已结束。

我不熟悉 Teradata,但据说必须有一个列出活动进程的系统表。或许可以使用 pass through SQL 来查询获取当前进程。

【讨论】:

    【解决方案3】:

    我会尝试以下方法:

    1. 测试DBCOMMIT= 数据集选项是否有帮助
    2. 如果 1. 没有帮助,请使用 OPEN 函数上的循环来查询表是否准备好,如下所示:

      data _null_;
        dsid=0;
        do i=1 to 3600 while(dsid<=0);
           ts=SLEEP(1,1);
           dsid=OPEN('TERADATA.MYTABLE','I');
        end;
        if dsid then dsid=CLOSE(dsid);
      run;
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-19
      • 2015-03-20
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      相关资源
      最近更新 更多