1

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

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

你会如何解决这个问题?

4

3 回答 3

0

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

于 2009-07-15T12:05:12.413 回答
0

我会尝试以下方法:

  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;
    
于 2009-07-17T09:41:12.113 回答
0

完善乔恩的答案,您可能想查看查询处理是否已结束。

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

于 2009-07-15T12:16:59.750 回答