99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀訪問(wèn)關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)
訪問(wèn)關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)
2017-03-30
收藏

訪問(wèn)關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)

訪問(wèn)關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)

SAS提供了一組訪問(wèn)關(guān)系型數(shù)據(jù)庫(kù)的SAS/ACCESS接口,每種接口有單獨(dú)的許可。使用這些接口,SAS可以和其他廠商數(shù)據(jù)庫(kù)中的數(shù)據(jù)交互。SAS所支持的關(guān)系型數(shù)據(jù)庫(kù)如表2.3所示。

表2.3 SAS支持的關(guān)系型數(shù)據(jù)庫(kù)

除了上述關(guān)系型數(shù)據(jù)庫(kù)外,SAS還提供了對(duì)應(yīng)的SAS/ACCESS引擎訪問(wèn)ERP、SPSS等系統(tǒng)軟件中的數(shù)據(jù)。這些內(nèi)容本書不做介紹,讀者如果有需要可以參考SAS幫助文檔學(xué)習(xí)。

SAS/ACCESS接口引擎提供以下方法訪問(wèn)關(guān)系型DBMS中的數(shù)據(jù):

使用LIBNAME語(yǔ)句將SAS邏輯庫(kù)引用名定義到DBMS對(duì)象,例如schema和數(shù)據(jù)庫(kù)。

還可以使用ACCESS過(guò)程來(lái)訪問(wèn)數(shù)據(jù)庫(kù)系統(tǒng),但是SAS不推薦使用這種方式。SAS推薦使用更直接的方式訪問(wèn)DBMS數(shù)據(jù),如上面提到的兩種。所以,本文不介紹ACCESS過(guò)程,感興趣的讀者可以通過(guò)SAS幫助文檔了解。

通過(guò)LIBNAME語(yǔ)句訪問(wèn)

在介紹SAS邏輯庫(kù)的文章里,已經(jīng)提到了接口邏輯庫(kù)引擎的概念。接口邏輯庫(kù)是通過(guò)SAS/ACCESS接口軟件來(lái)訪問(wèn)的其他軟件,例如數(shù)據(jù)庫(kù)管理系統(tǒng)、格式化的文件等。通過(guò)LIBNAME語(yǔ)句指定接口邏輯庫(kù)的引用名后,就可以像訪問(wèn)SAS原生數(shù)據(jù)集一樣通過(guò)二級(jí)引用來(lái)訪問(wèn)數(shù)據(jù)庫(kù)中的表了。這時(shí)數(shù)據(jù)庫(kù)中的表也稱為接口數(shù)據(jù)集。這里簡(jiǎn)單介紹SAS/ACCESS用LIBNAME語(yǔ)句訪問(wèn)關(guān)系型數(shù)據(jù)庫(kù)的一般用法,更詳細(xì)的用法請(qǐng)查看SAS幫助文檔。

注意:

大多數(shù)情況下,接口數(shù)據(jù)集的使用與原生數(shù)據(jù)集沒(méi)有區(qū)別,但仍然會(huì)有些限制。例如在DATA步的DATA語(yǔ)句和SET語(yǔ)句中不能指定同一個(gè)接口數(shù)據(jù)集,否則SAS會(huì)報(bào)錯(cuò)。

LIBNAME語(yǔ)句指定到DBMS對(duì)象的邏輯庫(kù)引用名的基本形式如下:

LIBNAME 邏輯庫(kù)引用名 邏輯庫(kù)引擎 訪問(wèn)連接選項(xiàng);

其中:

下面兩條LIBNAME語(yǔ)句分解建立了到Teradata數(shù)據(jù)庫(kù)和Oracle數(shù)據(jù)庫(kù)的邏輯庫(kù)引用名。接著,就可以使用帶邏輯庫(kù)引用名tdlib和oralib的二級(jí)名稱引用數(shù)據(jù)庫(kù)中的表了。

libname tdlib teradata server=tera2650 database=hps user=user1 password=password1;

libname oralib oracle path=mypath schema=myschema user=usr1 password=password1;

通過(guò)PROC SQL訪問(wèn)

PROC SQL為SAS軟件實(shí)現(xiàn)了結(jié)構(gòu)化查詢語(yǔ)句(Structured Query Language,SQL)。關(guān)于PROC SQL的信息在后面的文章里會(huì)詳細(xì)講解。這里主要是介紹如何通過(guò)PROC SQL使用SAS/ACCESS訪問(wèn)關(guān)系型數(shù)據(jù)庫(kù)

前兩種方法仍然使用的是SAS/ACCESS LIBNAME引擎,引用數(shù)據(jù)庫(kù)中表的形式與引用SAS原生數(shù)據(jù)集相同,這里不做介紹。作為L(zhǎng)IBNAME語(yǔ)句的替代,SQL轉(zhuǎn)交功能使用SAS/ACCESS連接DBMS,并將語(yǔ)句直接放到DBMS執(zhí)行,這樣就可以使用DBMS本身的SQL語(yǔ)法了。所以,SQL轉(zhuǎn)交功能支持當(dāng)前DBMS支持的任何非ANSI標(biāo)準(zhǔn)的SQL。需要注意的是,不是所有的SAS/ACCESS接口都支持這種屬性。

使用SQL轉(zhuǎn)交功能的基本形式如下:

PROC SQL;

CONNECT TO 數(shù)據(jù)庫(kù)名稱 <AS 別名> <(<數(shù)據(jù)庫(kù)連接參數(shù)> )>;

EXECUTE (數(shù)據(jù)庫(kù)特定SQL語(yǔ)句) BY 數(shù)據(jù)庫(kù)名稱|別名;

SELECT 列列表FROM CONNECTION TO數(shù)據(jù)庫(kù)名稱|別名 (數(shù)據(jù)庫(kù)查詢);

DISCONNECT FROM數(shù)據(jù)庫(kù)名稱|別名;

QUIT;

在上述形式中:

各語(yǔ)句執(zhí)行的返回值和消息保存在宏變量&sqlxrc和&sqlxmsg中。

下面的代碼建立到Oracle數(shù)據(jù)庫(kù)的連接,在CONNECT語(yǔ)句中,oracle為數(shù)據(jù)庫(kù)名稱、mycon為別名、括號(hào)里的內(nèi)容為數(shù)據(jù)庫(kù)的連接參數(shù)。%put宏將上一條CONNECT語(yǔ)句的返回值和代碼打印到日志窗口。SELECT語(yǔ)句通過(guò)建立的連接將表employees中滿足條件(hiredate>="31-DEC-88")的行指定的5列(empid、 lastname、firstname、hiredate、salary)數(shù)據(jù)取出。

proc sql;

connect to oracle as mycon (user=myusr1

password=mypwd1 path="mysrv1" schema=myshm1);

%put &sqlxmsg;

select *

from connection to mycon

(select empid, lastname, firstname,

hiredate, salary

from employees where

hiredate>="31-DEC-88");

%put &sqlxmsg;

disconnect from mycon;

quit;

PROC SQL還可以將上面的查詢存儲(chǔ)為SQL視圖或創(chuàng)建為SAS數(shù)據(jù)集。下面的代碼中查詢條件一樣,還是將查詢存儲(chǔ)為SAS邏輯庫(kù)中的SQL視圖,這樣在下次使用該視圖時(shí)就可以自動(dòng)從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)了。

libname samples "SAS-library";

proc sql;

connect to oracle as mycon (user=myusr1

password=mypwd1 path="mysrv1" schema="schm1");

%put &sqlxmsg;

create view samples.hires88 as

select *

from connection to mycon

(select empid, lastname, firstname,hiredate, salary

from employees where

hiredate>="31-DEC-88");

%put &sqlxmsg;

disconnect from mycon;

quit;

使用SQL轉(zhuǎn)交(pass-through)功能。通過(guò)該功能,在SAS會(huì)話中可以使用原生SQL語(yǔ)法與數(shù)據(jù)源交互,這些SQL語(yǔ)句會(huì)直接交給數(shù)據(jù)源處理。

邏輯庫(kù)引用名為訪問(wèn)數(shù)據(jù)庫(kù)的邏輯引用名稱,在介紹SAS邏輯庫(kù)的文章里有詳細(xì)介紹。

邏輯庫(kù)引擎由所要訪問(wèn)的數(shù)據(jù)庫(kù)確定,例如Oracle數(shù)據(jù)庫(kù)引擎為oracle,Teradata數(shù)據(jù)庫(kù)引擎為teradata,Hadoop的引擎為hadoop。

訪問(wèn)連接選項(xiàng)提供連接信息并控制SAS如何管理到DBMS鏈接的時(shí)機(jī)和并發(fā)。不同數(shù)據(jù)庫(kù),連接選項(xiàng)會(huì)不同。例如,連接到Oracle數(shù)據(jù)的連接選項(xiàng)為User=、PASSWORD=和PATH=。

使用LIBNAME語(yǔ)句指定接口邏輯庫(kù)引用名,然后在PROC SQL語(yǔ)句中引用該引用名查詢、更新或刪除DBMS數(shù)據(jù)。

將LIBNAME信息嵌入到PROC SQL視圖,在每次處理該SQL視圖時(shí)自動(dòng)連接到DBMS。

使用PROC SQL的擴(kuò)展功能,將DBMS特定的SQL語(yǔ)句直接發(fā)送到DBMS,該功能叫做SQL轉(zhuǎn)交(pass-through)功能。

CONNECT語(yǔ)句建立到DBMS的連接:數(shù)據(jù)庫(kù)名稱標(biāo)識(shí)要連接的數(shù)據(jù)庫(kù)管理系統(tǒng);別名為該連接指定別名;數(shù)據(jù)庫(kù)連接參數(shù)指定PROC SQL連接到DBMS需要的特定的DBMS參數(shù)。

EXECUTE語(yǔ)句發(fā)送DBMS特定的、非查詢SQL語(yǔ)句到DBMS。SAS會(huì)把輸入的內(nèi)容原封不動(dòng)地發(fā)送到DBMS。有些DBMS可能是大小寫敏感的,需要注意。

CONNECTION TO組件獲取并使用PROC SQL查詢或視圖中的DBMS數(shù)據(jù)。數(shù)據(jù)庫(kù)查詢指定要發(fā)送到DBMS上的查詢,該查詢可使用對(duì)該DBMS有效的任何DBMS特定的SQL語(yǔ)句或語(yǔ)法。同樣,這些查詢對(duì)有些DBMS可能是大小寫敏感的。

DISCONNECT語(yǔ)句終止到DBMS的連接。

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }