明示的な 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の管理者権限が必要ですか?私はそれを持っていません。 ありがとう!