楼主: davil2000
25658 83

[原创博文] 如何在SAS系统中整合ORACLE资源   [推广有奖]

院士

98%

还不是VIP/贵宾

-

TA的文库  其他...

☆大数据时代文库☆

威望
4
论坛币
29697 个
通用积分
13.2845
学术水平
1172 点
热心指数
1121 点
信用等级
1143 点
经验
96908 点
帖子
2694
精华
19
在线时间
3003 小时
注册时间
2004-10-31
最后登录
2022-6-10

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

     当前的SAS系统提供了许多数据库管理的功能,包括数据库视图和一套扩展的ANSI SQL语言。SAS包括了几个用来获取关系型数据库的过程。我们将探讨如何基于SAS系统平台来实现网络工作站与远程Oracle服务器的连接。虽然这里讨论的是如何使用SAS/Access和SAS/SQL来连接Oracle数据库的,但原理同样适用于DB2、Sybase、Informix、ODBC、OLE DB、SQL Server以及Teradata等客户端/服务器系统。SAS/Access是基于客户端/服务器系统而开发的,这就需要独立的数据库引擎来为本地应用提供数据服务。这里的例子中,SAS是作为客户端而ORACLE关系型数据库是作为服务器的。
    SAS/Access和SAS/SQL产品的复杂性源于从客户端向服务器发送命令的必要性。在WIN或者UNIX系统中,这些功能通常以三种形式出现:
    • PROC ACCESS -- 装载DBMS数据进入SAS
    • PROC DBLOAD -- 装载SAS数据进入DBMS
    • SQL数据传递 -- 执行标准SQL语言
   PROC ACCESS
    PROC Access 使用较为复杂。因为需要首先创建一个获取描述块(Access Descriptor)来描述一个DBMS表格数据,再创建一个视图描述块(View Descriptor)来描述这个DBMS表格的子集。下面的例子显示了该过程如何处理远程Oracle数据库表格:
          proc access dbms=oracle;
             create work.test.access;
             user="system";
             orapw="pinggu";
             table="system.Dw_account";
             path="@test.beijing";
             assign=yes;
             list all;
             create work.test.view;
             select Account Account_code1;
             subset where Account_code1 = '105';
          run;
          proc print data=test;
          run;

access1.PNG
        这段代码先在临时库中创建一个名为test的 "Access Descriptor";然后,账户、密码、路径(网络服务名) 是针对Oracle服务器而填写的。Oracle域名在这里被转换为SAS格式,数据库内容也被清单列示。注意:表格"Dw_account"、所有者"system"需要在这里声明。接着,一个包含了远程表格EMP某些行与列的"View Descriptor"也被创建。根据特定用户的Oracle权限,这样的数据视图能够被用来读取或者更新数据库。这里可见,PROC ACCESS的语法比较复杂。比如,即便获取、视图描述块是在临时库中创建,还是需要指明三级名称work.test.access和work.test.view。
    此为,高版本SAS提供了不再需要创建获取、视图描述块的数据库资源整合方式。如下一行代码所示,提供使用一种"动态库名引擎(Dynamic Libname Engine)",SAS能够如同对待数据集那样处理远程数据库。
          libname mydblib oracle user=system pw=pinggu path="@test.beijing";

          run;
libname.PNG
        PROC DBLOAD
    DBLoad过程则以相反方式来处理数据------将数据从SAS系统拷贝进入DBMS系统中。该过程适于大量加载,比如:将全部SAS数据集拷入Oracle中。然而,SAS程序员需要注意以下两点:
    • 缺省装载的限度为5000条记录。加载更大的数据表则需要设定limit=0。
    • 仅用来建立新表格。如果已经存在表格,则该过程异常中止。
    下面的例子演示了从SAS系统中创建一个新的Oracle表格:
          proc dbload dbms=oracle data=sashelp.prdsale;
                orapw="pinggu";
                user="system";
                path="@test.beijing";
                table="system.prdsale";
                label;
                reset all;
                load;
          run;

dbload.PNG
    该过程的语言与PROC ACCESS极为相似。一个名为"sashelp.prdsale"的SAS数据文件被作为表格拷入了Oracle中并且命名为"prdsale"。SAS变量标识则被作为Oracle域名。注意:这里必须存在"load"语句,否则表格将不会创建。
        SQL数据传递
    SQL(Structured Query Language)语言是一种应用广泛的、使用来获取或更新关系型数据库中表格的标准语言。SQL语言以PROC SQL的形式内嵌于BASE SAS模块之中。PROC SQL是管理远程数据表格的有效工具,为有经验的SQL用户提供了一个相对直观的界面。在大规模加载情形中,PROC SQL表现出优越于DBLoad的性能。除此之外,PROC SQL还明显表现出简便有效、界面友好的优势。需要强调的是:在不同的关系型数据库中,SQL的表现也不尽相同;在Oracle客户端使用的SQL*Plus表现出区别于PROC SQL的语法特征。这样,在使用之前,需要查询SQL用户指南、咨询数据库管理员。
    下面的例子显示了如何使用PROC SQL来作为PROC ACCESS的替代品:
              proc sql;
                connect to oracle
                (user=system orapw=pinggu path="@test.beijing");
                create table test2 as
                select * from connection to oracle
                (select * from Prdsale);
                disconnect from oracle;
          quit;

sql_orcl.PNG
        程序中使用了三个SQL语句:建立数据库连接、断开数据库连接以及分派数据。这里的SQL select语句包括了两部分:(1)加上括号的表达式 (select * from prdsale)为数据传递部分。这段代码被发送到Oracle数据库服务器来获得指定数据表格"prdsale";(2) 外部select语句将Oracle查询结果返还SAS系统。最后,create table 语句将查询结果形成数据集work.prdsale。如果该语句被遗漏,则PROC SQL仅在输出窗口显示查询结果。
   
    根据不同的客户端/服务器平台,SAS系统提供了一系列关系型数据库的获取、访问方法。相对于之前的SAS版本,8.0版后的Oracle、ODBC和DB2的动态逻辑库名引擎在大规模获取与视图描述块方面获得了跨越式的提升。未来的SAS版本将会进一步对于关系型数据库以及其它类型的外部数据源提供性能卓越的逻辑库名支持。



相关链接:
大数据时代BI先锋利器——SAS数据仓库管理系统
https://bbs.pinggu.org/forum.php?mod=viewthread&tid=1597181&from^^uid=3282317

SAS SQL与大型商业数据库——ITAT数据分析师培训项目系列文集
https://bbs.pinggu.org/forum.php?mod=viewthread&tid=1552391&from^^uid=3282317

SAS/WA与数据仓库——ITAT数据分析师培训项目系列文集
https://bbs.pinggu.org/forum.php?mod=viewthread&tid=1552624&from^^uid=3282317

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Oracle ACL CLE connection Disconnect 系统 资源 如何

回帖推荐

ziyenano 发表于4楼  查看完整内容

libname语法 算是 aceess的一种简便写法,数据传输效率还是sql更高效。 我在这个帖子里写过一点构建方法,https://bbs.pinggu.org/thread-2111308-1-1.html, 这么看来,能当作这篇帖子细节上的一点补充, 还有希望大牛能把upload的语法也写进来呐!

大数据之魂 发表于10楼  查看完整内容

这样也能成为符合实际的搭配形式。 在商务智能领域,SAS公司的最大竞争对手就是ORACLE

数据分析师3K 发表于7楼  查看完整内容

ORACLE在国内存在大量用户 这部分资源有效利用起来 将会产生不可估量的经济效益
已有 16 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
李会超 + 60 精彩帖子
maidong731 + 1 + 1 + 1 精彩帖子
cjboof + 1 关注
120913313 + 1 + 1 + 1 分类
crackman + 100 鼓励积极发帖讨论
sfhsky + 3 精彩帖子
420948492 + 20 精彩帖子
ziyenano + 1 + 1 + 1 精彩帖子
大数据之魂 + 100 + 5 + 5 + 5 根据规定进行奖励
liujianfang + 5 奖励积极上传好的资料

总评分: 经验 + 480  论坛币 + 200  学术水平 + 34  热心指数 + 30  信用等级 + 30   查看全部评分

本帖被以下文库推荐

R是万能的,SAS是不可战胜的!
沙发
仙人掌宝贝 发表于 2012-10-31 15:38:55 |只看作者 |坛友微信交流群
厉害!

使用道具

藤椅
资料狂人 在职认证  发表于 2012-10-31 15:39:09 |只看作者 |坛友微信交流群
一如既往地专业!!!!!


使用道具

板凳
ziyenano 发表于 2012-10-31 15:48:11 |只看作者 |坛友微信交流群
libname语法 算是 aceess的一种简便写法,数据传输效率还是sql更高效。
我在这个帖子里写过一点构建方法,https://bbs.pinggu.org/thread-2111308-1-1.html
这么看来,能当作这篇帖子细节上的一点补充,
还有希望大牛能把upload的语法也写进来呐!
已有 1 人评分经验 学术水平 收起 理由
数据分析师3K + 20 + 1 鼓励积极发帖讨论

总评分: 经验 + 20  学术水平 + 1   查看全部评分

使用道具

报纸
wangdakui 发表于 2012-10-31 15:54:51 |只看作者 |坛友微信交流群
头一次有想学SAS的渴望......

使用道具

地板
admin 企业认证  发表于 2012-10-31 15:59:40 |只看作者 |坛友微信交流群
ACCESS!

使用道具

7
数据分析师3K 发表于 2012-10-31 16:16:23 |只看作者 |坛友微信交流群
ORACLE在国内存在大量用户  
这部分资源有效利用起来
将会产生不可估量的经济效益

使用道具

8
瀚海星云 发表于 2012-10-31 19:52:08 |只看作者 |坛友微信交流群
SAS也太牛X了 竟然整合ORACLE

使用道具

9
南海游客 发表于 2012-10-31 20:34:25 |只看作者 |坛友微信交流群
强大的SAS 俺也来学习一下

使用道具

10
大数据之魂 发表于 2012-11-1 08:32:20 |只看作者 |坛友微信交流群
这样也能成为符合实际的搭配形式。
在商务智能领域,SAS公司的最大竞争对手就是ORACLE

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-19 15:34