2017-04-06 7 views
1

明示的な SQLパススルーを使用すると、テンポラリSQLテーブルをPROC SQLステートメントの間に保持できますか?SASはパススルー・テンポラリ・テーブルを示しますか?PROC SQL文とRSUBMITの間に存続しますか?

私はSAS 9.3を使ってSASサーバーにも接続しています。そのため、RSUBMITもあります。以下のコードは、何が起こっているかの簡単な例です。

このコードでは、テンポラリテーブルが作成されていますが、ENDRSUBMITの後に接続が終了しています。近いうちに終了することがありますが、 10分後に後の部分を実行すると、テンポラリテーブルが消えてしまいます。

作業テーブルは非常に大きく、変換はパススルーではるかに高速ですが、それでも時間がかかります。データベース側で一時テーブルを少しだけ永久にする方法はありますか?

/* EXAMPLE */ 
/* upload list to db*/ 
RSUBMIT; 
PROC SQL; 
connect to odbc as db (dsn=blahdb uid=&id pwd=&pass connection=global); 
execute(load table #mylist (NUMLIST '\n') using client file 'mylist' escapes off quotes off delimited by ',') by db; 
QUIT;RUN; 
ENDRSUBMIT; 

/* Join with database tables */ 
RSUBMIT; 
PROC SQL; 
connect to odbc as db (dsn=blahdb uid=&id pwd=&pass connection=global); 

execute(select * 
    into #mylist2 
    from #mylist A 
    JOIN DBTABLE B on A.VAR = B.VAR 
) by db; 

QUIT; RUN; 
ENDRSUBMIT; 

/* download join into SAS*/ 
RSUBMIT; 
PROC SQL; 
connect to odbc as db (dsn=blahdb uid=&id pwd=&pass connection=global); 

create table akwork.sastab as select * from connection to db (select * from #mlist2); 

QUIT;RUN; 
ENDRSUBMIT; 

グローバルな一時表には、dbの管理者権限が必要ですか?私はそれを持っていません。 ありがとう!

答えて

0

これは一般的にSybaseの場合に有効です。 SQLステートメントの最後にセミコロンを追加すると、一時テーブルはアクティブセッションを通じて永続的になります。

私はこれをSASのSQLパススルーでテストしました。これは別のrsubmitステートメントの間で動作します。

そのため、代わりにこれを使用する:

execute(select * 
    into #mylist2 
    from #mylist A 
    JOIN DBTABLE B on A.VAR = B.VAR; 
) by db; 
1

おそらく、独立したPROC SQLセッション間で持続できる接続を作成するには、LIBNAMEコマンドを使用する必要があります。 librefが作成されていなければ、SASとデータベースを接続してアクティブに保つことはできません。

少なくとも、TeradataへのSAS/Accessでどのように動作するかです。あなたはそれが(限り、彼らは同じユーザーであるとして)接続にわたって維持できるようにするために、二重ハッシュ(##)で一時テーブルを先行することができるSQL Serverで

libname tdwork teradata server=blahdb user=&id password=&pass connection=global; 
... 
proc sql; 
    connect to teradata as db (server=blahdb user=&id password=&pass connection=global); 
    ... 
quit; 
... 
proc sql; 
    connect to teradata as db (server=blahdb user=&id password=&pass connection=global); 
    ... 
quit; 
0

関連する問題