分类: WINDOWS
2009-05-19 09:11:45
SAS与常用数据库联结代码
功能:链接Sql Server数据库
参数说明:
libname (在SaS映射的数据库名) Data Source (SQL Server主机地址)
Initial Catalog (SQL Server数据库名)
User ID (SQL Server数据库登陆用户名) Password (SQL Server数据库登陆密码)
*******************************************************************/
/* 连接 DataBaseName 数据库 */
libname base oledb provider=sqloledb
properties=("Data Source"=ServerName "User ID"=MyUserName "Password"=MyPassWord "Initial Catalog"=DataBaseName);
/*******************************************************************
功能:链接Oralce数据库
参数说明:
libname (在SaS映射的数据库名) path (Oracle数据库SID)
schema (Oralce数据库名一般为数据库一个用户)
oracle user (oracle数据库登陆用户名) password (oracle数据库登陆密码)
注意:登陆Oracle数据库的帐号密码必须有权限登陆指定的数据库
*******************************************************************/
/* 链接 DataBaseName 数据库(SID:orcl) */
libname DataBaseName oracle user=MyUserName password=MyPassWord path='orcl' schema=DataBaseName; /*******************************************************************
功能:链接dbf数据文件
参数说明:
filename (指定需要打开的dbf文件)
db5 (2,3,4,5 指定dBASE的版本)
out (在SaS中的记录集)
*******************************************************************/
filename DataBaseName '盘符:\路径\文件名.DBF';
proc dbf db5=DataBaseName out=DataBaseName;
run;
/*******************************************************************
功能:导入excel数据文件
参数说明:
OUT(输出的Sas数据集)
DATAFILE(指定导入的excel文件)
RANGE(指定导入的sheet名称)
GETNAMES(首行标题)
*******************************************************************/
PROC IMPORT OUT= WORK.DataBaseName
DATAFILE= "盘符:\路径\文件名.xls"
DBMS=EXCEL2000 REPLACE;
RANGE="Sheet1$";
GETNAMES=YES;
RUN;
/*******************************************************************
功能:导入access数据文件
参数说明:
OUT(输出的Sas数据集)
SAS提供了两种办法可以访问大型数据库。SAS/ACCESS可以直接连接Oracle、Sybase 、SQL Server等大型数据库。为了访问储存在这些数据库中的表,需要对数据库中的表在SAS 中建立访问描述文件(access descriptor),和视图描述文件(view descriptor)。例如,在数据库服务器DBIN中有一个数据库Finance,其中有一个表Sales,用户名guest用密码anyone 可以访问此库,就可以用以下程序在SAS中建立访问描述文件和视图文件:
PROC ACCESS DBMS=SYBASE;
CREATE sasuser.sales.ACCESS;
SERVER='DBIN';
DATABASE='Finance';
TABLE='Sales';
USER='guest';
PASSWORD='anyone';
CREATE sasuser.salesall.VIEW;
SELECT ALL;
RUN;
其中大写的部分是固定的。这段程序首先生成了访问描述文件SASUSER.SALES.ACCESS,然后由此访问描述文件生成了视图文件SASUSER.SALESALL.VIEW。在SAS中视图文件和数据集的使用是一样的,可以使用数据集的地方都可以使用视图文件。
对于SAS没有直接支持的数据库管理系统,我们在MS Windows下总可以使用ODBC数据库接口来连接到数据库,这要求我们在安装SAS时安装了ODBC驱动。为了访问外部数据库,首先要在计算机上安装该数据库的客户端驱动程序,然后在Windows的控制面板中打开ODBC的控制,新建一项ODBC数据源,输入该数据库管理器的名字,数据库名。然后,使用PROC SQL程序来建立视图我们以前的数据库为例,假设建立了ODBC数据源finodb:
PROC SQL;
CONNECT TO ODBC (DSN='finodb' UID='guest' PWD='anyone');
CREATE VIEW sasuser.sales2 AS
SELECT * FROM CONNECTION TO ODBC (
SELECT * FROM Sales );
QUIT;
其中的CONNECT TO语句用来建立到数据库的连接,后面的CREATE VIEW语句建立一个视图,但是图的数据来源是ODBC数据源,所以AS后面是关键字SELECT * FROM CONNECTION TO ODBC ,然后在括号中给出了具体的从外部数据库中取得一个查询结果的SQL语句。这个SQL语句可以用来取表的一个子集构成视图。生成的 SASUSER.SALES2是一个SAS视图,在访问时将用保存的连接参数临时去访问外部数据库来得到数据。
这种使用PROC SQL直接连接外部数据库的方法也适用于非ODBC的数据源。