2012-01-13 45 views
-1

任何人都可以幫助我使用SAS數據集中的值在數據庫中創建臨時表的語法嗎?我想用臨時表旁邊的數據庫中的其他表加入。使用sas數據集中的值在數據庫中創建臨時表

libname X odbc dsn=aaabbb uid=abcd pwd=efgh quote_char=''; 

data X.vishtest; 
set test.noosbtest; 
run; 

我要創建「vishtest」與在SAS數據集「test.noosbtest」值的臨時表。

我已經在類似下面和它刪除值,但未來我無法把SAS數據集到該臨時表的值較早嘗試創建一個臨時表:

select * from connection to X(Create temp table vishtest as select var1 from table1 limit 20); 

select * from connection to X(delete from tempdb.vishwatemp a); 
+0

是ODBC LIBNAME連接到什麼類型的數據庫? – 2012-01-13 15:31:26

+0

數據庫位於Netezza服務器上。第二組代碼如下select * from connection to X(創建臨時表vishtest作爲選擇var1 from table1 limit 20); select * from connection to X(從tempdb.vishwatemp中刪除a); 這是從另一個現有的表與大約20行數據創建一個臨時表vishtest,我正在刪除臨時表vishtest的內容。它工作正常,直到這裏...但接下來,我想從我的本地驅動器或lib,這是我無法做到的SAS數據集輸入值到這個臨時表。 – user1147697 2012-01-16 13:53:18

+0

據我所知,最簡單的事情就是刪除現有的臨時表並簡單地創建一個新表 - 是否可行?我會做'proc sql;放桌子X.vishwatemp;創建表X.vishwatemp爲(select * from test.noosbtest);' – 2012-01-21 00:08:49

回答

1

你必須確保您的本地sas數據集與您的數據庫表具有相同的列。如果PROC比較回來,告訴你這兩個表是相同的,那麼

proc sql; 
    create table X.my_table_empty like X.my_table; 
    create table the_data_empty like mylib.the_data; 
quit; 
proc compare 
    data = my_table_empty 
    compare = the_data_empty; 
run; 

如果您現有的數據庫表是X.my_table和本地數據集mylib.the_data,你可以試試這個你應該能夠將數據表加載到臨時表:

proc append 
    base = X.my_table_empty 
    data = mylib.the_data; 
run; 

原來的答覆:

這是從另一個現有表與大約20行數據創建臨時表vishtest,我正在刪除表vishtest temp 的內容。它工作正常,到這裏......但接下來,我要輸入 值,該臨時表從SAS數據集這是我的本地 驅動器或LIB上,對此我不能做

如果vishtest包含相同的列的SAS數據集,那麼這可能 爲你工作:

proc append 
    base = X.vishtest 
    data = test.noosbtest; 
run; 
+0

我的邏輯創建臨時表是.. 。從netezza上的任何現有表中創建一個臨時表,只有幾條記錄,比如10條記錄......然後刪除這個新臨時表中的內容......下一步是使用位於本地驅動器中的sas數據集的數據加載此臨時表。 – user1147697 2012-01-27 13:17:21

相關問題