最近引入服务版SAS,使用SAS EG连接oracle数据库,考虑数据提取的效率及使用原来编写的大量oracle数据库SQL脚本,使用connect方式连接的oracle数据。
在sas中建立相关的程序,数据顺利提取并保存为SAS数据集,但发现一个问题,此前使用pl/sql抽取数据然后导入SAS并保存为SAS数据集,140W条数据,SAS数据集约700MB。在SAS中,用connect直接连接oracle数据库并使用同一脚本,直接抽取的数据发现居然有25G。后续查看发现25G的数据集,有大量SAS字段设置的字符长度为2000个,8000个这样巨大长度,导致SAS数据集储存空间过大,而实际记录的字符数一般就是2-10个。
同时查看过抽取的对应字段在oracle数据库表中,个别字段虽然实际记录的字符数很短,但数据库表在设计时设置了1000个字符这样的长度,但部分SAS数据集中为8000字符的字段,oracle数据表中设置仅10个字符长度,不知道SAS数据集怎么自动设置的字符长度,同时向请教,如何解决这个问题?
附:采用下列方式链接的oracl数据库
connect to oracle
(user=system orapw=pinggu path="@test.beijing");
create table test2 as
select * from connection to oracle
(select * from Prdsale);
disconnect from oracle;
quit;