首页 存档 技术 查看内容

访问关系型数据库系统中的数据

2018-3-30 13:00 |来自: 互联网 333 0

摘要: 本文转自SAS知识 (ID: SASadvisor),摘自《深入解析SAS 数据处理、分析优化与商业应用 》 回复「朝阳35处」可查看「说人话的大数据」系列合辑 上一篇文章,我们介绍了通过IMPORT过程读取外部文件数据,今天我 ...

本文转自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中的数据:

  • 使用LIBNAME语句将SAS逻辑库引用名定义到DBMS对象,例如schema和数据库。

  • 使用SQL转交(pass-through)功能。通过该功能,在SAS会话中可以使用原生SQL语法与数据源交互,这些SQL语句会直接交给数据源处理。

还可以使用ACCESS过程来访问数据库系统,但是SAS不推荐使用这种方式。SAS推荐使用更直接的方式访问DBMS数据,如上面提到的两种。所以,本文不介绍ACCESS过程,感兴趣的读者可以通过SAS帮助文档了解。

通过LIBNAME语句访问

在介绍SAS逻辑库的文章里,已经提到了接口逻辑库引擎的概念。接口逻辑库是通过SAS/ACCESS接口软件来访问的其他软件,例如数据库管理系统、格式化的文件等。通过LIBNAME语句指定接口逻辑库的引用名后,就可以像访问SAS原生数据集一样通过二级引用来访问数据库中的表了。这时数据库中的表也称为接口数据集。这里简单介绍SAS/ACCESS用LIBNAME语句访问关系型数据库的一般用法,更详细的用法请查看SAS帮助文档。

注意

大多数情况下,接口数据集的使用与原生数据集没有区别,但仍然会有些**。例如在DATA步的DATA语句和SET语句中不能指定同一个接口数据集,否则SAS会报错。

LIBNAME语句指定到DBMS对象的逻辑库引用名的基本形式如下:

LIBNAME 逻辑库引用名 逻辑库引擎 访问连接选项;

其中:

  • 逻辑库引用名为访问数据库的逻辑引用名称,在介绍SAS逻辑库的文章里有详细介绍。

  • 逻辑库引擎由所要访问的数据库确定,例如Oracle数据库引擎为oracle,Teradata数据库引擎为teradata,Hadoop的引擎为hadoop。

  • 访问连接选项提供连接信息并控制SAS如何管理到DBMS链接的时机和并发。不同数据库,连接选项会不同。例如,连接到Oracle数据的连接选项为User=、PASSWORD=和PATH=。

下面两条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访问关系型数据库:

  • 使用LIBNAME语句指定接口逻辑库引用名,然后在PROC SQL语句中引用该引用名查询、更新或删除DBMS数据。

  • 将LIBNAME信息嵌入到PROC SQL视图,在每次处理该SQL视图时自动连接到DBMS。

  • 使用PROC SQL的扩展功能,将DBMS特定的SQL语句直接发送到DBMS,该功能叫做SQL转交(pass-through)功能。

前两种方法仍然使用的是SAS/ACCESS LIBNAME引擎,引用数据库中表的形式与引用SAS原生数据集相同,这里不做介绍。作为LIBNAME语句的替代,SQL转交功能使用SAS/ACCESS连接DBMS,并将语句直接放到DBMS执行,这样就可以使用DBMS本身的SQL语法了。所以,SQL转交功能支持当前DBMS支持的任何非ANSI标准的SQL。需要注意的是,不是所有的SAS/ACCESS接口都支持这种属性。

使用SQL转交功能的基本形式如下:

PROC SQL;

CONNECT TO 数据库名称

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部