2009-07-15 5 views
1

Beim Laden von Tabellen von SAS nach Teradata lädt SAS die Daten (normalerweise mithilfe der FASTLOAD-Funktion) und fährt dann mit dem Skript fort. Allerdings bekomme ich oft kritische Fehler, weil SAS sagt, dass die Daten geladen sind, aber Teradata sammelt immer noch die Daten innerhalb der Tabelle.Daten von SAS nach Teradata laden - Wann ist es fertig?

Also sind die Daten in der Datenbank, aber nicht bereit für die Verwendung. Ich muss erst noch herausfinden, ob die Daten für die Verarbeitung mit anderen Tabellen bereit sind. Es ist mir gelungen, einen Schlafbefehl zu verwenden, aber das ist willkürlich und unzuverlässig (weil wer weiß, wie lange es dauern wird).

Wie würden Sie dieses Problem beheben?

+0

ich ein ähnliches Problem mit Sybase gehabt haben und haben keine andere Lösung als Warte/dabei gefunden andere Dinge, bevor ich auf die Datenbank zugreife. –

Antwort

0

Ich würde versuchen, die folgenden:

  1. Prüfe, ob die DBCOMMIT= Datensatz Option
  2. helfen kann, wenn 1. nicht hilft, eine Schleife über die OPEN Funktion verwenden, um abzufragen, ob der Tisch bereit, wie folgt aus:

    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; 
    
0

Können Sie schlafen, versuchen, abzufragen, irgendeinen Fehler zu fangen und Schleife bis zur Fertigstellung?

+0

Das Problem ist, Abfragen nicht Fehler. Ich habe also keine Bedingung, um weiter zu machen. – AFHood

0

Bei der Verfeinerung von Jon's Antwort möchten Sie vielleicht nachfragen, ob die Verarbeitung beendet ist.

Ich bin nicht mit Teradata vertraut, aber angeblich muss es eine Systemtabelle geben, die aktive Prozesse auflistet. Es könnte möglich sein, Pass-Through-SQL zu verwenden, um die aktuellen Prozesse abzufragen.