sas连接数据库通过其专有的access
模块来实现的。实际的项目中用到的地方很多,故记录下,这里我选择的数据库是mysql数据库。mysql数据库可以从其官网下载(http://www.mysql.com/downloads/)。下载其中的社区版本,发现跟以前的有很大的不同,甲骨文公司将其组件进行了集成。

sas access
提供了两种方式连接数据库。第一种方式就是在sas 里建立mysql 的逻辑库。
语句如下:
libname
test mysql user=root password=sas123 database=mydb
server=localhost port=3306;
其中mysql是逻辑库的类型,user是用户名,默认为root,password为用户密码,database为数据库名称,server为数据库所在机器的sns,port为端口号。
运行语句后,就可以在本地逻辑库中看见test的逻辑库,但是里面的表都看不见(不知道为何)。
新建一个数据库的表就可以直接在sas通过语句创建:
data test.aa;
x=1;
run;
或者 data test.aa;
set sashelp.class;
run;
具体的sas
里面的格式和mysql里面的数据类型就要参考相应的帮助文档了。
第二种就是通过 pass through 的方式,其就是在 proc sql 里面
连接操作mysql数据库。基本语句如下:
proc sql;
connect to mysql
(user=root password=sas123 server=localhost
database=world port=3306);
create table b as select * from connection to
mysql
(select * from city);
execute(create table cc as select * from aa
)by mysql;
disconnect from mysql;
quit;
这样我们创建了一个sas表,这里面首先通过connect连接数据库,中间执行一些数据库操作,最后断开连接。
这里面很多情况我们只要提交执行的mysql的sql语句,可以通过 execute
语句执行数据库里面的sql语句即可。
这两种方式其唯一的区别就是前者对数据库的操作只能用sas 语句,而后者可以在execute
里面执行数据库特定的sql语句,所以具体使用何种还要看使用的场景 。 这里注意sas
连接数据库需要相应数据库的odbc,否则上面的语句执行会报错的。
个人感觉sas连接数据库这方面相对比R方便点,语句简单,且其支持的数据库很多(包含hadoop);但r对数据的操作更为灵活,相对sas。