第一篇:Kettle創(chuàng)建oracle連接
Kettle創(chuàng)建oracle連接,在test的時候報錯的解決方案
1、先點擊Cancel進(jìn)入kettle主界面
依次FILE--NEW--JOB OR TRANSFORMATION,在transformation頁面下,點擊左邊的【Main Tree】【主對象樹】,雙擊【DB連接】,進(jìn)行
數(shù)據(jù)庫連接配置 插播我的kettle配置: 我的版本是kettle4.4 環(huán)境變量設(shè)置:KETTLE_HOME F:ToolsKettle4.4data-integration
Path % KETTLE_HOME% 首先找到
Kettle 的主程序啟動方式:運行 data-integrationSpoon.bat。
Kettle 默認(rèn)不帶 Oracle 驅(qū)動。于是我把 Oracle 的 JDBC 驅(qū)動 ojdbc14.jar/ojdbc14_g/ojdbc14dms/ojdbc14dms_g.jar 放到了 Kettle 的目錄data-integrationlibextJDBC
我遇到的連接錯誤:
錯誤連接數(shù)據(jù)庫 [orcl] : org.pentaho.di.core.exception.KettleDatabaseException: Error occured while trying to connect to the database
Error connecting to database:(using class oracle.jdbc.driver.OracleDriver)Io 異常: The Network Adapter could not establish the connection
org.pentaho.di.core.exception.KettleDatabaseException: Error occured while trying to connect to the database
Error connecting to database:(using class oracle.jdbc.driver.OracleDriver)Io 異常: The Network Adapter could not establish the connection
3、原因:
--
1、connection name:orcl【這個是我的數(shù)據(jù)庫名,連接時我也用這個名字,DB名字也是這個】
--
2、Host-name:說實話,我重裝系統(tǒng)之后還真沒注意主機(jī)名是什么,我是在
E:oracleproduct10.2.0db_1networkADMIN中的tnsnames.ora中查到的,ORCL =(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = john-PC)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME =orcl)))端口號寫1521 Username和password 就是我連接oracle的用戶名和密碼,點擊test按鈕,終于連接成功了!
第二篇:Oracle使用工具plsql遠(yuǎn)程連接問題
使用PL/SQL Developer遠(yuǎn)程連接Oracle數(shù)據(jù)庫,本地機(jī)器上已經(jīng)安裝了Oracle數(shù)據(jù)庫只要
1.配置tnsnames.ora(我的安裝在D:oracleproduct10.2.0db_1networkADMIN)
2.登錄plsql時填寫相應(yīng)信息
第一步:配置tnsnames.ora
找到tnsnames.ora文件,用記事本方式打開,你可以看到像如下配置信息
ORCL =
(DESCRIPTION =
(ADDRESS =(PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)))
上面這段是連接本地(安裝好Oracle默認(rèn)的,你也可以修改數(shù)據(jù)庫別名,將“ORCL”換成其他的)的數(shù)據(jù)庫的要連接遠(yuǎn)程的Oracle數(shù)據(jù)庫則再增加配置信息如下
自己定義遠(yuǎn)程數(shù)據(jù)庫名稱(別名)=
(DESCRIPTION =
(ADDRESS =(PROTOCOL = TCP)(HOST = 遠(yuǎn)程服務(wù)器IP)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = 遠(yuǎn)程服務(wù)器上數(shù)據(jù)庫名稱)))
注意:別名不能與其他數(shù)據(jù)庫(本地、遠(yuǎn)程)的別名相同,它可以跟相應(yīng)遠(yuǎn)程服務(wù)器上的數(shù)據(jù)庫名稱不一樣,要連接多個遠(yuǎn)程Oracle數(shù)據(jù)庫,照樣子在來幾段上述配置信息即可。
第二步:登錄plsql
Username:
Password:
Database:要登錄的數(shù)據(jù)庫名稱(別名)
Connect as:
注意:一定要寫對上面面的紅色部分(其余的3個字段我就不說了),且跟tnsnames.ora配置文件中的別名相同
知道這兩步后,以后不管是遠(yuǎn)程還是本地上的數(shù)據(jù)庫你想怎么連就怎么連!只是tnsnames.ora文件中多了幾段配置信息。
第三篇:kettle實踐經(jīng)驗總結(jié)
數(shù)據(jù)抽取工具Kettle實踐經(jīng)驗小結(jié) 杭州州力數(shù)據(jù)-陳力
同步數(shù)據(jù)常見的應(yīng)用場景包括以下4個種類型:
1.只增加、無更新、無刪除............................................................................................................1 2.只更新、無增加、無刪除............................................................................................................3 3.增加+更新、無刪除....................................................................................................................4 4.增加+更新+刪除.........................................................................................................................5 5.調(diào)用存儲過程................................................................................................................................7
1無參數(shù)輸入:........................................................................................................................7
2、有參數(shù)輸入.........................................................................................................................8
1.只增加、無更新、無刪除
對于這種只增加數(shù)據(jù)的情況,可細(xì)分為以下2種類型: 1)
基表存在更新字段。
通過獲取目標(biāo)表上最大的更新時間或最大ID,在“表輸入”步驟中加入條件限制只讀取新增的數(shù)據(jù)。
這里要注意的是,獲取最大更新時間或最大ID時,如果目標(biāo)表還沒有數(shù)據(jù),最大值會獲取不了。其中的一個解決方法是在“獲取最大ID”步驟的SQL中,加入最小日期或ID的聯(lián)合查詢即可,如: SELECT MAX(ID)FROM(SELECT MAX(ID)AS ID FROM T1 UNION ALL SELECT 0 AS ID FROM DUAL)2)
基表不存在更新字段。通過“插入/更新”步驟進(jìn)行插入。
插入/更新步驟選項:
2.只更新、無增加、無刪除
通過“更新”步驟進(jìn)行更新。
更新選項:
3.增加+更新、無刪除
通過“插入/更新”步驟進(jìn)行插入。
區(qū)別是“插入/更新步驟”中的選項,去掉“不執(zhí)行任何更新”的勾選:
4.增加+更新+刪除
這種數(shù)據(jù)同步情況,可細(xì)分為以下2種情況: 1)
源庫有表保存刪除、更新和新增的信息。
通過條件判斷,分別進(jìn)行“插入/更新”和“刪除”即可,如下圖所示。
2)
源庫沒有保存增刪改信息
Kettle提供了一種對比增量更新的機(jī)制處理這種情況,可通過“合并記錄”步驟實現(xiàn),該步驟的輸入是新舊兩個數(shù)據(jù)源,通過關(guān)鍵字進(jìn)行數(shù)據(jù)值比對,對比結(jié)果分為以下4種類型: “Identical” : 關(guān)鍵字在新舊數(shù)據(jù)源中都存在,域值相同 “changed” : 關(guān)鍵字在新舊數(shù)據(jù)源中都存在,但域值不同 “new” : 舊數(shù)據(jù)源中沒有找到關(guān)鍵字 “deleted”: 新數(shù)據(jù)源中沒有找到關(guān)鍵字
兩個數(shù)據(jù)源的數(shù)據(jù)都進(jìn)入下一步驟,上述4種結(jié)果類型作為輸出表的標(biāo)志字段進(jìn)行保存。以下為示例: ? 源數(shù)據(jù)庫測試腳本
create table k1(f1 varchar2(200),f2varchar2(200))truncate table k1;insert into k1(f1,f2)values('1','11');insert into k1(f1,f2)values('2','22');insert into k1(f1,f2)values('5','5');commit;? 目標(biāo)數(shù)據(jù)庫測試腳本
create table k1(f1 varchar2(200),f2varchar2(200))truncate table k1;insert into k1(f1,f2)values('1','1');insert into k1(f1,f2)values('2','2');insert into k1(f1,f2)values('3','3');insert into k1(f1,f2)values('4','4');commit;合并過程如下:
其中“合并記錄”步驟的選項:
執(zhí)行后,查詢K1_TEST結(jié)果如下:
可以看到,該結(jié)果表的BZ字段保存了更新、刪除、新增的記錄信息,通過條件分支即可分別對這些記錄進(jìn)行相應(yīng)的處理。“條件”選項:
5.調(diào)用存儲過程
調(diào)用存儲過程主要是分為,有參數(shù)輸入與無參數(shù)輸入兩類。
1無參數(shù)輸入:
輸入存儲過程名稱直接調(diào)用即可,但需要設(shè)置返回值(在參數(shù)設(shè)置中配置好)
2、有參數(shù)輸入
此類比較常見,也比較復(fù)雜。(1)變量值固定:
首先,在轉(zhuǎn)換中設(shè)置變量。對調(diào)用存儲過程的轉(zhuǎn)化進(jìn)行配置:
此3步驟的配置如下:
注意:獲取系統(tǒng)信息中的類型中的命令行參數(shù)X,指的就是下一步中對應(yīng)的位置參數(shù)!故,在每次點擊執(zhí)行作業(yè)job(一個作業(yè)可能包含多個轉(zhuǎn)換transform)時,需要配置或者核對參數(shù)值。
最后,點擊開始運行你的作業(yè),出現(xiàn)如下,在“位置參數(shù)”部分寫上對應(yīng)的值。然后點擊執(zhí)行(這中方法當(dāng)然是要在配置好與調(diào)用存儲過程相匹配的變量獲取后才行)。
此類參數(shù)經(jīng)常作為查詢或者同步數(shù)據(jù)用。
(2)、當(dāng)你需要的變量值,不是事先固定寫死的,而是需要動態(tài)從數(shù)據(jù)庫中某一張表中獲取后,傳入時,就不能直接在kettle系統(tǒng)的變量設(shè)置中配置變量了。執(zhí)行這一過程的,作業(yè)(job)如下:
2.1 “獲取ynzybi跟新時間(DB2數(shù)據(jù)庫)”。
首先從,ynzybi(DB2)數(shù)據(jù)庫的表SYNNO1DATASTATE中獲取要同步數(shù)據(jù)的最后跟新時間lastupdatetime,并設(shè)置變量lasttime,如下圖:
2.2 “獲取DC日期區(qū)間(Terdate數(shù)據(jù)庫)”
根據(jù)前一步獲取的lasttime,從數(shù)據(jù)中心(terdate數(shù)據(jù)庫)表K_COM_D_ALL中獲取2個時間區(qū)間節(jié)點,并設(shè)置對應(yīng)的變量。注意,在執(zhí)行時,一定要在“替換SQL語句里的變量”選項打鉤,這樣才會自動替換SQL語句中的'%%lasttime%%',否則或報錯!在windows環(huán)境下,變量的替換格式均為%%變量名稱%%
2.3 “刪除ynzybi表中時間區(qū)間內(nèi)的數(shù)據(jù)” 此轉(zhuǎn)換中,就只有一個東東,既執(zhí)行SQL腳本
SQL腳本的設(shè)置:
2.4“插入ynzybi數(shù)據(jù)”
在上一步中,已經(jīng)將ynzybi(DB2)數(shù)據(jù)庫中的DC_K_COM_D_ALL表中對應(yīng)區(qū)間的數(shù)據(jù)全部刪除,接下來只需直接從Terdate數(shù)據(jù)庫的K_COM_D_ALL表中抽取對應(yīng)時間段內(nèi)的數(shù)據(jù)全部插入到y(tǒng)nzybi(DB2)數(shù)據(jù)庫的DC_K_COM_D_ALL表中,即可完成不同類型數(shù)據(jù)庫中,不同表中數(shù)據(jù)的同步。這里之所以這么大費周章,先刪除后插入。原因是在于,使用Kettle中自帶的“數(shù)據(jù)同步”或者“更新/插入”轉(zhuǎn)換,效率很低,每條數(shù)據(jù)都要merge一次,大概才100條數(shù)據(jù)左右/秒。對于大量數(shù)據(jù)的更新同步,太耗時間了,下圖是“插入ynzybi數(shù)據(jù)”轉(zhuǎn)換的截圖:
下圖是“表輸入”和“表輸出”的配置圖:
表輸入
表輸出
注意:1.勾選“批量插入”,后可以大幅提高數(shù)據(jù)插入表的速度!2.勾選“忽略插入錯誤”,后插入過程中遇到某些原因,某些數(shù)據(jù)不能插入,將會被忽略,程序繼續(xù)執(zhí)行,不報錯,但會有日志顯示。不選的話,遇到插入錯誤,就報錯,轉(zhuǎn)換停止!3.勾選“制定數(shù)據(jù)庫字段”后,在數(shù)據(jù)庫字段中就可以選擇需要插入的字段
表輸入b
2.5“調(diào)用存儲過程” 轉(zhuǎn)換過程圖如下:
表輸入的設(shè)置圖入下:
注意:這的表輸入,其實不需要任何一個表中的數(shù)據(jù),其中SQL語句入下:“select '%%begindate%%' as v_dt1,'%%enddate%%' as v_dt2,'%%dc_updatetime%%' as dc_updatetime from sysibm.sysdummy1”。
這條語句從表中不選任何數(shù)據(jù)(sysibm.sysdummy1表,可以是你數(shù)據(jù)庫中任何一張表)。而是獲取前面步驟中設(shè)定好的變量值,傳到調(diào)用存儲過程中去,作為輸入?yún)?shù)。之所以這么弄,是因為試了好多方法,去沒能將前面步驟中的變量直接獲取傳入到存儲過程中去。故采用這種看似笨的方法,但很實用。
調(diào)用存儲過程配置圖:
調(diào)用成功。
全過程結(jié)束!
第四篇:oracle創(chuàng)建臨時表
Oracle數(shù)據(jù)庫臨時表管理心得
我們在創(chuàng)建數(shù)據(jù)表的時候,若沒有特殊的指明,那么我們創(chuàng)建的表是一個永久的關(guān)系型表格,也就是說,這個表格中對應(yīng)的數(shù)據(jù),除非是我們顯示的刪除的話,表中的數(shù)據(jù)是永遠(yuǎn)都存在的。相對應(yīng)的,在Oracle數(shù)據(jù)庫中還有一種類型的表,叫做臨時表。這個臨時表跟永久表最大的區(qū)別就是表中的數(shù)據(jù)不會永遠(yuǎn)的存在。當(dāng)一個會話結(jié)束或者事務(wù)結(jié)束的時候,這個臨時表中的數(shù)據(jù),不用用戶自己刪除,數(shù)據(jù)庫自己會自動清
除。
1、事務(wù)臨時表的管理。
(1)事務(wù)臨時表的創(chuàng)建。
Oracle數(shù)據(jù)庫根據(jù)臨時表的性質(zhì)不同,可以分為事務(wù)臨時表與會話臨時表。事務(wù)臨時表是指數(shù)據(jù)只有在當(dāng)前事務(wù)內(nèi)有效。一般情況下,如果在創(chuàng)建數(shù)據(jù)表的時候,沒有特殊指明這表是會話臨時表的話,則該表默認(rèn)為事務(wù)臨時表。
我們可以以下面的語句創(chuàng)建事務(wù)臨時表。
Create global temporary table Temp_user
(ID NUMBER(12)Primary key,name varchar2(10));
筆者建議:
這個創(chuàng)建臨時表的語句中,雖然沒有顯性的指明該表是事務(wù)臨時表,但是,默認(rèn)的情況下,若沒有指明是什么臨時表的話,系統(tǒng)默認(rèn)是事務(wù)臨時表。我們要創(chuàng)建事務(wù)臨時表時,可以不指定關(guān)鍵字。但是,這查看起來比較麻煩。我建議,無論在建立什么臨時表,都要利用具體的關(guān)鍵字來顯形的指明,這大家看起來都方便。一般可以利用ON COMMIT DELETE ROWS關(guān)鍵字來說明該表就是事務(wù)性的臨時表,而不是會話性質(zhì)的臨時表。
(2)事務(wù)臨時表數(shù)據(jù)的變化分析。
事務(wù)臨時表的話,當(dāng)事務(wù)結(jié)束的時候,就會清空這個事務(wù)臨時表。所以,當(dāng)我們在數(shù)據(jù)庫臨時表中插入數(shù)據(jù)后,只要事務(wù)沒有提交的話,該表中的數(shù)據(jù)就會存在。但是,當(dāng)事務(wù)提交以后,該表中的數(shù)據(jù)就會被刪除。而且,這個變化不會在重做日志中
顯示。
具體事務(wù)臨時表與會話臨時表有什么區(qū)別,我們在介紹完會話臨時表后會詳細(xì)介
紹。
2、會話臨時表的管理。
會話臨時表,顧名思義,是指數(shù)據(jù)只在當(dāng)前會話內(nèi)有效的臨時表。關(guān)閉當(dāng)前會話或者進(jìn)行新的連接之后,數(shù)據(jù)表中的內(nèi)容就會被清除。那會話臨時表跟事務(wù)臨時表到底有什么區(qū)別呢?我們以一個實例來看其中的區(qū)別。
(1)首先,創(chuàng)建一個會話臨時表。
CREATE GLOBAL TEMPOPARY TABLE TEMP_USER
(ID NUMBER(12)Primary key,name varchar2(10))
ON COMMIT PRESERVE ROWS;
也就是說,會話臨時表跟事務(wù)臨時表的創(chuàng)建語法大致相同,只有最后的關(guān)鍵字有區(qū)別。不過兩個表雖然類似,但是其內(nèi)部的處理機(jī)制還是有比較大的區(qū)別。
(2)往該表中插入數(shù)據(jù)。
Insert into TEMP_USER values(1001,’victor’);
往數(shù)據(jù)庫臨時表中插入數(shù)據(jù)的方法,跟往普通表中插入數(shù)據(jù)的方法是一樣的,都利用insert into語句進(jìn)行操作。該臨時表的數(shù)據(jù)在會話結(jié)束之前都是存在這個表格
中的。
(3)提交該事務(wù)并查詢相關(guān)記錄。
我們利用COMMIT的語句把該事務(wù)提交以后,再用SELECT查詢語句進(jìn)行查詢。我們知道,若該表是事務(wù)臨時表的話,則當(dāng)該事務(wù)結(jié)束以后,該表中的內(nèi)容就會被刪除。但是,這是會話臨時表,所以即使該事務(wù)提交了,但是,利用SELECT語句進(jìn)行查詢
時,仍然可以查到該條員工記錄。
(4)結(jié)束當(dāng)前會話,并重新連接數(shù)據(jù)庫。
關(guān)閉當(dāng)前會話,從新連接到數(shù)據(jù)庫后,再利用SELECT語句查詢時,會有什么結(jié)果呢?此時,就查不到我們剛才插入的數(shù)據(jù)。這也就是說,在關(guān)閉對話的時候,數(shù)據(jù)庫系統(tǒng)已經(jīng)把原有的數(shù)據(jù)刪除了。從以上的分析我們可以看中,會話臨時表與事務(wù)臨時表主要的差異就在于刪除數(shù)據(jù)時機(jī)的不同。事務(wù)性臨時表是在事務(wù)提交的時候清除數(shù)據(jù),而會話性臨時表則是在關(guān)閉當(dāng)前會話的時候清除臨時表。只要當(dāng)前會話沒有關(guān)閉,即使事務(wù)完成了,會話臨時表中的數(shù)據(jù)仍然存在,不會被清除。
3、臨時表管理需要注意的地方。
臨時表相對與其他表來說,是一種比較特殊的表結(jié)構(gòu),但是,作用又比較大,Oracle數(shù)據(jù)庫若沒有這種表的話,還真是不行。為了管理好這種特殊的表,我們需要
注意幾個細(xì)節(jié)。
一是要注意臨時表不能永久的保存數(shù)據(jù)。只所以稱為臨時表,就是因為該表中的內(nèi)容只是臨時存在的。當(dāng)一個會話或者事務(wù)結(jié)束時,該表中的內(nèi)容就會被自動清空。所以,在臨時表中,一般不要保存永久數(shù)據(jù)。在實務(wù)中,有個不好的操作習(xí)慣,就是有些人在測試數(shù)據(jù)庫的時候,喜歡把測試的數(shù)據(jù)放在臨時數(shù)據(jù)表中。其實,這是對Oralce臨時數(shù)據(jù)表認(rèn)識的錯誤。若我們在數(shù)據(jù)庫中,把要測試的數(shù)據(jù),如銷售定單的內(nèi)容放在數(shù)據(jù)庫的臨時表中的話,則在其他功能中,如要測試銷售定單日報表的功能時,就會找不到相關(guān)的定單內(nèi)容。因為離開特定的會話或者事務(wù)的話,臨時表中的內(nèi)容就會不存在了。所以,Oralce數(shù)據(jù)庫中所講的臨時表不是給我們來存儲測試數(shù)據(jù)的。
二是臨時表中的數(shù)據(jù)不會備份、恢復(fù),對其的修改也不會有任何的日志信息。若我們在操作數(shù)據(jù)庫的時候,往數(shù)據(jù)庫的臨時表中存入了一些信息。此時突然服務(wù)器出現(xiàn)當(dāng)機(jī)。此時,我們想通過數(shù)據(jù)庫備份文件恢復(fù)數(shù)據(jù)庫臨時表中的內(nèi)容,或者查看臨時表的日志信息,都是無法實現(xiàn)的。也就是說,當(dāng)服務(wù)器以外死機(jī)重新啟動后,臨時表中的內(nèi)容就會被清空。在數(shù)據(jù)庫的任何地方,如數(shù)據(jù)庫備份文件或者日志信息中,都查不到在重新啟動之前數(shù)據(jù)庫臨時表中保存了哪些內(nèi)容,就好象根本沒有對臨時表
進(jìn)行操作一樣。
三是臨時表表空間的管理。臨時表在Oracle數(shù)據(jù)庫中,也是表的一種,其也有對應(yīng)的表空間。在創(chuàng)建臨時表的時候,若我們不指定表空間的話,默認(rèn)的表空間是SYSTEM。對于臨時表的表空間管理的話,我們需要注意一個小的細(xì)節(jié)。若我們把臨時表的表空間歸屬為SYSTEM的話,也就是說,在創(chuàng)建臨時表的時候不具體指定具體的表空間,則這個默認(rèn)的表空間是不能被刪除的。而若我們在創(chuàng)建臨時表表空間的時候,指定為SYSTEM以外的表空間的話,則在不需要這表空間的時候,我們可以刪除。所以,為了后續(xù)管理的方便,筆者還是建議大家在創(chuàng)建臨時表的時候,要指定表空間。
四是要注意一個問題,臨時表只是數(shù)據(jù)是臨時的,而表仍然是永久的。也就是說,當(dāng)一個會話結(jié)束或者一個事務(wù)完成時,其臨時表中的數(shù)據(jù)雖然刪除了,但是,臨時表本身仍然是存在的。也就是說。Oracle數(shù)據(jù)庫中的臨時表表是全局的,只是數(shù)據(jù)是臨時的。這跟SQL Server數(shù)據(jù)庫系統(tǒng)具有比較大的區(qū)別。其實,這兩個數(shù)據(jù)庫在臨時表的處理上有很大的不同,各有各的特色。在以后的文章中,我會專門敘述這兩種數(shù)據(jù)庫在臨時表管理機(jī)制上的不同,歡迎大家關(guān)注。
五是要注意Oracle數(shù)據(jù)庫在給臨時表填入數(shù)據(jù)的時候,不會對相應(yīng)的記錄加鎖。也就是說,當(dāng)在臨時表上執(zhí)行DML語句的操作時,不會給記錄加鎖,也不會將數(shù)據(jù)的變化內(nèi)容寫到重做(REDO)日志中。所以不能用臨時表保存永久的數(shù)據(jù),也不能對臨時表進(jìn)行共同的操作。這是新手在管理數(shù)據(jù)庫臨時表經(jīng)常會碰到的問題。
六是臨時表與普通表之間不能相互轉(zhuǎn)換。在一般情況下,臨時表建立后,該表就不能被轉(zhuǎn)換成永久表。所以,這也說明一個道理,利用臨時表作為數(shù)據(jù)庫設(shè)計時候的測試表不合適。這個臨時表可能跟我們按字面意思理解的臨時表有誤,不是我們所認(rèn)為的為了測試表結(jié)構(gòu)而建立的臨時表。這一點是我們在剛開始接觸ORACLE數(shù)據(jù)庫時,經(jīng)常會犯的錯誤。
第五篇:SAS連接ORACLE中的ODBC設(shè)置(本站推薦)
SAS連接ORACLE中的ODBC設(shè)置
前提:你安裝了SAS、ORACLE客戶端(配置了目錄Oracleora90networkADMIN下的tnsnames文件)接下來就是配置odbc
第一步:控制面板——管理工具——數(shù)據(jù)源(ODBC)
第二步:系統(tǒng)DSN——添加
第三步:創(chuàng)建新數(shù)據(jù)源——選擇oracle驅(qū)動程序
第四步:在1處填入名稱(up to you),在2處選擇tnsnames文件下配置的名稱,3處輸入用戶名,ok
第五步:sas中邏輯庫配置,在邏輯庫空白處右鍵——新建
第六步:填寫邏輯庫名稱、引擎選擇odbc,選中啟動時啟用、選中數(shù)據(jù)源、用戶id、密碼,確定
接下來你創(chuàng)建的邏輯庫就可以用了