2009-07-15 9 views
1

Lors du chargement de tables de SAS vers Teradata, SAS charge les données (généralement à l'aide de la fonction FASTLOAD), puis continue le script. Cependant, je reçois souvent des erreurs critiques parce que SAS dit que les données sont chargées, mais Teradata est toujours en train d'assembler les données dans la table. Par conséquent, les données sont dans la base de données, mais ne sont pas prêtes à être utilisées. Je n'ai pas encore trouvé un moyen de savoir si les données sont prêtes pour le traitement avec d'autres tables. J'ai réussi à utiliser une commande de sommeil, mais cela est arbitraire et peu fiable (car qui sait combien de temps cela prendra).Chargement des données de SAS vers Teradata - Quand est-il prêt?

Comment répareriez-vous ce problème?

+0

J'ai eu un problème similaire avec Sybase et n'ont pas trouvé d'autre solution que d'attendre/faire moi d'autres choses avant d'accéder à la base de données. –

Répondre

0

Je les opérations suivantes:

  1. test si l'option de jeu de données DBCOMMIT= peut aider
  2. Si 1. ne fonctionne pas, utiliser une boucle sur la fonction OPEN pour interroger si la table est prêt, comme ceci:

    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

Pourriez-vous dormir, essayer d'interroger, d'attraper une erreur et boucle jusqu'à prêt?

+0

Le problème est, les requêtes ne pas d'erreur. Je n'ai donc aucune condition à boucler. – AFHood

0

Affiner la réponse de Jon, vous pourriez vouloir interroger si le traitement est terminé.

Je ne suis pas familier avec Teradata, mais supposément il doit y avoir une table des systèmes listant les processus actifs. Il est possible d'utiliser SQL pour interroger les processus en cours.

Questions connexes