當前位置:才華齋>IT認證>Oracle認證>

ORACLE與excel的資料互傳方法

Oracle認證 閱讀(2.72W)

眾所周知,MicrosoftExcel能很直觀而方便地進行資料輸入,統計,生成圖表,但它的資料管理能力有限,對大量的資料查詢能力不足,如果利用它資料計算方面的優點和大型資料庫ORACLE的資料查詢優點,可以設計出功能強大的資料處理系統。

ORACLE與excel的資料互傳方法

假設與Excel資料檔案相對應的職工情況表EMP已在ORAC LE系統中建立,此表中各欄位按照順序分別是職工代號( Emp—No),職工姓名(Ename),工資(Salary),僱用時間(Hiredate)。

  1、將Excel中的資料裝入ORACLE資料庫

通過ORACLE資料庫系統的高階應用工具SQL*Loader 可以將原來的Excel中儲存的資料直接裝入ORACLE資料庫的表中。

首先,在MicrosoftExcel中完成表格資料輸入後,選擇“儲存檔案”命令,在出現對話方塊的“檔案型別”欄中選取“格式化文字檔案(空格分隔)”以形成一個標準格式化文字檔案(*)或是選取“CSV(逗號分隔)” 形成一個逗號定界檔案(*)。這兩者的區別是:標準格式的文字檔案中每個記錄等長,資料間按原庫檔案欄位長度緊湊排列,字元型欄位資料左對齊,資料型欄位資料右對齊,不足部分用空格補足。逗號定界檔案特點是各記錄可不等長,欄位按其定義順序依次排列,欄位間用逗號分隔,字元型欄位和資料型欄位的左右端空格被消去。

因為這兩種格式檔案有不同的資料裝入方法,假如我們將職工情況EMP表存為,資料變成如下形式:

120,JOE,1192.64,93/04/11

121,KERT,309.60,87/01/14

23,PETER,1500.25,84/03/12

124,SMITH,678.00,91/01/07

15,YOUNG,2390.12,80/05/03

接著,通過記事本建立以下控制檔案,它包含了資料檔案的名稱及其格式,檔案欄位如何定界,資料型別是怎樣等內容,將該裝載控制檔案儲存為:

LOADDATA INFILE 'C:‘BADFILE '' DISCARDFILE '' APPEND INTOTABLEEMP FILEDS TERMINATED BY "," (Emp-No,Ename,Salary,HiredateDATA(8) "Y Y/MM/DD")

之後,雙擊SQL*Loader圖示,進入ORACLE7的資料裝載工具,在彈出的SQLLOADER主螢幕對話方塊中,分別輸入使用者登入名,密碼,資料庫名稱和控制檔名,確認後進行資料裝載。這樣SQL*Loader一邊轉換、裝入資料,一邊將執行過程中的錯誤資訊和統計資訊存入登入檔案(LogFile)中,把ORACLE拒絕裝入的原始資料存入拒絕檔案(RejectFile)。使用者可以在裝載完成後,開啟登入檔案檔案檢視資料的裝載情況,瞭解因為何種原因使得資料被拒絕,是因為資料本身不符合資料庫的數表定義還是違反了完整性原則等其它原因。由此可見,資料裝載不僅快速而且安全。

特別要提到的是可以通過SQL*Loader同時將資料檔案裝入多個數表。例如在Excel表格中輸入資料時,可以對應輸入該職工參加的專案代號(Proj-No),現在需要將這些資料分別裝入EMP表和PROJ表。資料檔案按標準格式儲存如下所示,其中第5,6,7列均為該職工參加的專案代號:

120JOE1192.6493/04/11101112

121KERT309.6087/01/142812

23PETER1500.2584/03/124017

124SMITH678.0091/01/07102021

15YOUNG2390.1280/05/03432617

編寫的裝載資料控制檔案可以是:

LOADDATA INFILE'C:'  BADFILE'' DISCARDFILE '' APPEND INTOTABLE EMP(Emp-NoPOSITION(01:05)INTEGER EXTERNAL,EnamePOSITION(06:15)CHAR, SalaryPOSITION(16:25)DECIMAL EXTERNAL, HiredatePOSITION(26:34)INTEGEREXTERNAL) INTOTABLEPROJ WHENProj-No!K'' (Emp-NoPOSITION(1:4)INTEGEREXTERNAL, Proj-NoPOSITION(35:38)INTEGEREXTERNAL) INTOTABLEPROJ WHENProj-No!K'' (Emp-NoPOSITION(1:4)INTEGEREXTERNAL, Proj-NoPOSITION(39:42)INTEGEREXTERNAL) INTOTABLEPROJ WHENProj-No!K'' (Emp-NoPOSITION(1:4)INTEGEREXTERNAL, Proj-NoPOSITION(43:46)INTEGEREXTERNAL)

注意,CHAR,INTEGEREXTERNAL和DECIMALEXTERNAL這些資料型別是指資料檔案中的資料型別,而不是資料庫中數表的資料型別。數字欄位的EXTERNAL暗示了它不是以二進位制格式儲存的數字,而是以人可以識別的ASCII碼格式儲存。

這樣執行SQL*Loader之後,所需資料被分別裝入兩個數表,非常方便。

  2、將ORACLE資料檔案轉化為Excel檔案

當需要在Excel下獲取ORACLE資料時,可以通過ODBC (假設ORACLE是安裝在WindowsNT作業系統下)。ODBC的英文意思是OpenDatabaseConnectivity(開放式資料庫連線),它是Microsoft提供的一組標準應用程式程式設計介面(API)。ODBC建立了一組應用程式直接操作資料庫資料的規範,允許使用者的應用程式使用基於SQL語言的不同型別的`資料庫管理系統。 在Excel的“資料”選單中獲取“獲取外部資料”,M icrosoftQuery被啟動。這是一個非常有用的資料查詢程式,它能在網路上以客戶機/伺服器形式快速查詢資料。在其中的File選單中選取NewQuery,“SelectDataSource ”窗口出現,提示使用者在DataSource列表中選取需獲取的資料所在的資料來源。點按“Other”按鈕,“ODBCDataSour ce”窗口出現,列出了機器中已被定義的所有ODBC資料來源,如果在其中未能找到ORACLE資料來源,說明對應於ORACLE 資料來源的ODBCDriver驅動程式未有安裝。此時,只要點選 New按紐,在出現的“AddDataSource”對話方塊中選取ORAC LE7.1Driver,“Oracle7ODBCSetup”窗口出現,分別輸入資料庫名字和有效的SQL*Net主機連線字串(格式如:P/ServerName/InstantId),確認後MicrosoftQrery 就與ORACLE中的資料庫相連。這之後,使用者就可以象使用本機上的資料一樣,對伺服器資料進行操作。查詢得到結果退出MicrosoftQuery時,選擇“返回Excel”,資料就被取回到Excel中,在那裡進行報表,製圖處理,輸出結果。

這樣就可以非常方便地在Excel和ORACLE之間完成資料互傳,實現這兩個軟體取長補短,使其更好地為我們服務。