2012-01-13 232 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