从SAS Table写入DB2 Temp Table

时间:2014-04-28 19:47:06

标签: db2 sas

我在SAS中有一个本地表,我试图在远程DB2服务器上创建一个临时表表。除了在其他地方构建一个insert语句并流式化之外,还有其他方法吗?

libname temp db2 uid=blagh pwd=blagh dsn=blagh connection=global schema=Session;

Proc SQL;
  Connect to db2 (user=blagh pw=blagh dsn=blagh connection=global);

  Execute (
    Declare Global Temporary Table Session.Test
      ( foo char(10))
      On Commit Preserve Rows
      Not Logged
    ) by db2;

  Execute (Commit) by db2;

  Insert Into Session.Test
    Select Distinct A.foo From Work.fooSource A;

我在这些主题上尝试了几种变体,每种都会导致错误。上面的代码产生。

ERROR: Column foo could not be found in the table/view identified with the correlation name A.
ERROR: Unresolved reference to table/correlation name A.

删除别名给了我。

ERROR: INSERT statement does not permit correlation with the table being inserted into.

2 个答案:

答案 0 :(得分:1)

我不知道db2所以我不确定这是否有效,但“正常”的方法是使用PROC COPY(尽管数据步骤也应该有效)。我猜在上面的代码中db2不允许以这种方式插入(我认为在SQL风格中不支持这种情况相当普遍)。

libname temp db2 uid=blagh pwd=blagh dsn=blagh connection=global schema=Session;

proc copy in=work out=temp;
select work.foosource;
run;

如果您需要名称不同(在PROC COPY中它不会),您可以执行简单的数据步骤。

data temp.yourname;
set work.foosource;
run;

您不需要在SQL中执行插入操作。如果你想首先在db2中声明它(在connect to...会话中),你可能会这样做并且仍然可以执行这些选项中的任何一个(尽管这也会因RDBMS而异,所以请测试一下)。

答案 1 :(得分:1)

如下所示的传递语句应该有效。

proc sql;
  connect to db2 (user=blagh pw=blagh dsn=blagh connection=global);
  execute (create view
              sasdemo.tableA as
              select VarA, 
                     VarB,
                     VarC
              from sasdemo.orders)
  by db2;
  execute 
     (grant select on
      sasdemo.tableA to testuser)
      by db2;
  disconnect from db2;
quit;

下面的代码是我经常用来上传到DB2的代码

rsubmit YourServer;
libname temp db2 uid=blagh pwd=blagh dsn=blagh connection=global schema=Session;

   data temp.Uploaded_table(bulkload = yes bl_method = cliload);
      set work.SAS_Local_table;
   run;

endrsubmit;
libname temp remote server=YourServer;

SAS支持提供了更多DB2选项...... http://support.sas.com/documentation/onlinedoc/91pdf/sasdoc_913/access_dbspc_9420.pdf