Chinaunix首页 | 论坛 | 博客
  • 博客访问: 173993
  • 博文数量: 25
  • 博客积分: 3015
  • 博客等级: 中校
  • 技术积分: 545
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-15 17:00
文章分类

全部博文(25)

文章存档

2010年(1)

2009年(9)

2008年(15)

我的朋友

分类: 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的数据源。

阅读(3262) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~