Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
将表从 SAS 加载到 Teradata 时,SAS 加载数据(通常使用 FASTLOAD 工具),然后继续执行脚本。但是,我经常遇到严重错误,因为 SAS 说数据已加载,但 Teradata 仍在表中组装数据。
所以数据在数据库中,但还没有准备好使用。我还没有找到一种方法来知道数据是否已准备好与其他表一起处理。我已经成功地使用了 sleep 命令,但这是任意且不可靠的(因为谁知道需要多长时间)。
你会如何解决这个问题?
你可以睡觉,尝试查询,捕捉任何错误并循环直到准备好?
我会尝试以下方法:
如果 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;
完善乔恩的答案,您可能想查看查询处理是否已结束。
我不熟悉 Teradata,但据说必须有一个列出活动进程的系统表。可能可以使用通过 SQL 来查询获取当前进程。