SAS:想知道如何将 WORK.WHATEVER 表中的数据传递到 Netezza 表中
Posted
技术标签:
【中文标题】SAS:想知道如何将 WORK.WHATEVER 表中的数据传递到 Netezza 表中【英文标题】:SAS: Want to know how to pass data from a WORK.WHATEVER table into a Netezza table 【发布时间】:2018-10-23 19:44:00 【问题描述】:使用 SAS V 9.xxx。
如何将数据从通用 WORK 库中的表传递到 Netezza 中的表。
现在我可以从 Netezza 中取出数据并存储在 WORK 库中,例如:
/* using “connect to” */
proc sql;
connect to netezza (&us_mkt.);
execute (
drop table &tempdir..SALES_TBL_TST1;
create table &tempdir..SALES_TBL_TST1
as
select * from &tempdir..SALES_TBL;
/*select * from &tempdir..SALES_TBL */
) by netezza;
disconnect from netezza;
quit;
/* using “connect using” */
proc sql;
connect using ROLAP;
drop table WORK.SALES_TBL_TST2;
create table WORK.SALES_TBL_TST2 AS
select * from connection to ROLAP
(select * from USER_ROLAP.SALES_TBL);
insert into WORK.SALES_TBL_TST2
select * from connection to ROLAP
(select * from &tempdir..SALES_TBL);
quit;
但是,如果我想将 WORK 库中的数据放回 Netezza 怎么办。比如:
insert into &tempdir..SALES_TBL_TST1
select * from WORK.SALES_TBL_TST2;
有没有办法做到这一点?
提前致谢!
【问题讨论】:
【参考方案1】:您可以使用 libname 语句来移动数据。 需要批量加载(批量加载数据并更快)以快速传输记录。一旦定义了 libnames。可以通过 proc sql、datastep 或 proc append 将数据从工作中移动到 Netezza。移动数据代码类似于两个 SAS 库之间的数据移动(语法方面)。
下面是从http://support.sas.com/documentation/cdl/en/acreldb/63647/html/default/viewer.htm#a003181092.htm复制的代码
libname sasflt 'SAS-data-library';
libname net_air netezza user=louis pwd=fromage
server=air2 database=flights;
Proc sql 示例
proc sql;
create table net_air.flights98
(bulkload=YES bl_options='logdir "c:\temp\netlogs"')
as select * from sasflt.flt98;
quit;
【讨论】:
也可以说“插入 net_air.flights98 (bulkload=YES bl_options='logdir "c:\temp\netlogs"') select * from sasflt.flt98;" ? 如果我不添加 (bulkload=YES bl_options='logdir "c:\temp\netlogs"') 短语,它会变慢还是出错? 较慢。不到 500 万,你甚至可能不需要它。 bulkload=YES 随着记录数量的增加而导入 等待是 net_air 还是 %net_air。 ?您不必在 SAS 中包含该库名称吗? net_air。无需担心 netezza,因为您在这里没有提及路径以上是关于SAS:想知道如何将 WORK.WHATEVER 表中的数据传递到 Netezza 表中的主要内容,如果未能解决你的问题,请参考以下文章
如何在WLATIN1编码的SAS会话中使用UTF-8编码的文件?