1

SASからTeradataにテーブルをロードする場合、SASはデータをロードし(通常はFASTLOAD機能を使用)、スクリプトを続行します。ただし、SASがデータがロードされていると言っているために重大なエラーが発生することがよくありますが、Teradataはまだテーブル内でデータをアセンブルしています。

したがって、データはデータベースにありますが、使用する準備ができていません。データを他のテーブルで処理する準備ができているかどうかを知る方法をまだ見つけていません。私はsleepコマンドの使用に成功しましたが、それは恣意的で信頼性がありません(誰がどれくらいの時間がかかるかを知っているため)。

この問題をどのように修正しますか?

4

3 に答える 3

0

寝て、クエリを実行して、エラーをキャッチし、準備ができるまでループしてください。

于 2009-07-15T12:05:12.413 に答える
0

Jonの答えを洗練して、処理が終了したかどうかを照会することを検討することをお勧めします。

私はTeradataに精通していませんが、アクティブなプロセスをリストするシステムテーブルが必要になると思われます。パススルーSQLを使用して、現在のプロセスをクエリで取得できる場合があります。

于 2009-07-15T12:16:59.750 に答える
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 に答える