前一段时需要利用海量数据作分析,需要sas与db2的链接,在网上搜了很久,发现相关的内容较少,实践之后把我的体会写出来与大家分享。
服务器界面:win server2003
本机界面:win vista home (官方说明称sas9.2不能在vista home上使用,我测试了常用功能没问题,更多的功能没有测试,不过proc freq命令容易出错,尝试多次就ok)
sas版本:sas9.2
sas处理db2的数据至少有两种截然不同的方法:
1、直接读取db2的数据,不在逻辑库中建立数据
优点:能够节省本地空间,减少本地运算量,适用于本机性能不太好的用户;
缺点:对于表名为中文以及表字段名为中文的数据不能够识别,没办法链接(我们的集市是中文表明与字段名,尝试很多次不能成功),但是字段取值是中文的可以识别。
example:
libname DM db2 user=******* password=******
database=db schema=X;
proc sql;
select *
from x.xx;
run;
2、复制db2数据表到逻辑库中
优点:表字段名可以是中文(sas直接把中文字段名作为标注,更改字段名称,依次会更改为_col0,_col1......对于字段名称不敏感的可以进行对应,不会增加太多工作量),同时可以在逻辑库中任意编辑新的数据文件;
缺点:占用大量的磁盘空间,运行速度可能较慢,依旧不支持中文表名。
example:
proc sql;
connect to db2 as
aa(database=DM user=yangzh pwd=yangzihao);/*aa是虚拟表名,可以按照规则任意命名,但要保证前后一致*/
create table
bb as select * /*bb是逻辑库中的名称,如果已经建立了逻辑库名xx,那么就应该是xx.bb*/
from connection to
aa (select * from orig_ppm.product);
quit;
如果在使用中有什么问题,欢迎大家沟通。
希望能够给大家带来一定的帮助。