本文转自SAS知识 (ID: SASadvisor),摘自《深入解析SAS 数据处理、分析优化与商业应用 》 回复「朝阳35处」可查看「说人话的大数据」系列合辑 上一篇文章,我们介绍了通过IMPORT过程读取外部文件数据,今天我们介绍“访问关系型数据库系统中的数据”。 访问关系型数据库系统中的数据 SAS提供了一组访问关系型数据库的SAS/ACCESS接口,每种接口有单独的许可。使用这些接口,SAS可以和其他厂商数据库中的数据交互。SAS所支持的关系型数据库如表2.3所示。 表2.3 SAS支持的关系型数据库 除了上述关系型数据库外,SAS还提供了对应的SAS/ACCESS引擎访问ERP、SPSS等系统软件中的数据。这些内容本书不做介绍,读者如果有需要可以参考SAS帮助文档学习。 SAS/ACCESS接口引擎提供以下方法访问关系型DBMS中的数据:
还可以使用ACCESS过程来访问数据库系统,但是SAS不推荐使用这种方式。SAS推荐使用更直接的方式访问DBMS数据,如上面提到的两种。所以,本文不介绍ACCESS过程,感兴趣的读者可以通过SAS帮助文档了解。 通过LIBNAME语句访问 在介绍SAS逻辑库的文章里,已经提到了接口逻辑库引擎的概念。接口逻辑库是通过SAS/ACCESS接口软件来访问的其他软件,例如数据库管理系统、格式化的文件等。通过LIBNAME语句指定接口逻辑库的引用名后,就可以像访问SAS原生数据集一样通过二级引用来访问数据库中的表了。这时数据库中的表也称为接口数据集。这里简单介绍SAS/ACCESS用LIBNAME语句访问关系型数据库的一般用法,更详细的用法请查看SAS帮助文档。 注意: 大多数情况下,接口数据集的使用与原生数据集没有区别,但仍然会有些**。例如在DATA步的DATA语句和SET语句中不能指定同一个接口数据集,否则SAS会报错。 LIBNAME语句指定到DBMS对象的逻辑库引用名的基本形式如下: LIBNAME 逻辑库引用名 逻辑库引擎 访问连接选项; 其中:
下面两条LIBNAME语句分解建立了到Teradata数据库和Oracle数据库的逻辑库引用名。接着,就可以使用带逻辑库引用名tdlib和oralib的二级名称引用数据库中的表了。 libname tdlib teradata server=tera2650 database=hps user=user1 password=password1; libname oralib oracle path=mypath schema=myschema user=usr1 password=password1; 通过PROC SQL访问 PROC SQL为SAS软件实现了结构化查询语句(Structured Query Language,SQL)。关于PROC SQL的信息在后面的文章里会详细讲解。这里主要是介绍如何通过PROC SQL使用SAS/ACCESS访问关系型数据库:
前两种方法仍然使用的是SAS/ACCESS LIBNAME引擎,引用数据库中表的形式与引用SAS原生数据集相同,这里不做介绍。作为LIBNAME语句的替代,SQL转交功能使用SAS/ACCESS连接DBMS,并将语句直接放到DBMS执行,这样就可以使用DBMS本身的SQL语法了。所以,SQL转交功能支持当前DBMS支持的任何非ANSI标准的SQL。需要注意的是,不是所有的SAS/ACCESS接口都支持这种属性。 使用SQL转交功能的基本形式如下: PROC SQL; CONNECT TO 数据库名称 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|