熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle數據庫專享工具:SQL*Loader

2013-11-13 15:53:36  來源: Oracle 
SQL*Loader是Oracle數據庫系統提供的一個數據移植工具它提供了一個命令行的方式可以讓用戶成批的向Oracle數據庫中裝入大量數據雖然Oracle數據庫與SQL Server數據庫都提供了圖形界面的導入工具但是圖形界面有一個很大的不足就是不能夠直接給前台程序引用而命令行的導入模塊則可以直接被前台的應用程序所調用這也是SQL*Loader之所以成為Oracle數據庫系統最通用的工具之一的原因 

  SQL*Loader其具有如下的優勢

  一是可以直接被前台應用程序調用如開源的COMPIERE企業管理應用系統其就是采用Oracle的數據庫系統在COMPIERE這個應用系統中有一項很強大的功能就是數據導入功能其不但可以按現有的模板導入數據而且用戶還可以自定義導入的格式這對於系統在基礎數據導入的時候非常的有用 但是其這個功能的開發確很簡單因為其基本上都是直接調用後台數據庫系統中的SQL*Loader模塊命令行模式的導入模塊可以直接被前台的應用程序調用這是其最大的優勢

  二是可以從既定文件中大量導入數據利用SQL*Loader工具可以從既定文件中如逗號分隔符文件或者固定寬度的文件把這些文件中的大量記錄按照一定的規則導入到Oracle數據庫系統中去這個導入的效率比圖形界面來說也要高的多

  三是可以實現把多個數據文件合並成一個文件我們都知道Oracle數據庫中可以把一個數據庫應用所需要的數據存放在多個數據文件中以追求比較高的數據庫性能以及比價高的數據庫安全性但是有時候我們也可能需要把這幾個數據文件合二為一此時就可以采用SQL*Loader工具把它們進行合並

  四是修復分離壞的記錄有時候我們需要導入的數據跟Oracle數據庫系統的數據表可能會存在一些沖突導致數據導入的失敗如可能需要導入的數據字段太長超過了數據表的最大長度限制此時就會導致數據導入的失敗利用SQL*Loader導入工具可以把這些不符合規則的記錄分離出來存放在一個獨立的文件中而符合規則的數據則可以被正常的導入如此的話就可以提高數據導入的准確性
下面我們來看看具體如何使用這個Oracle數據庫系統為我們准備的好幫手

   一般SQL*Loader模塊至少需要兩個文件才可以使用

  一是數據文件數據文件顧名思義就是我們需要導入的數據集合對於Oracle系統來說其可以支持多個格式的數據文件如逗號分隔符或者TAB鍵分隔符或者分號分隔符等文本文件也支持固定寬度的文本文件等等不過在實際應用中用的最多的還是逗號分隔的文本文件

  二是控制文件控制文件其起的作用就是建立數據文件與Oralce數據表字段之間的一一對應關系簡單的說把數據文件中的某個內容放在Oracle數據表中的那個字段上這就是控制文件所起的主要作用

  另外還有一個文件也非常有用叫做壞文件如果我們在命令行工具中指定了這個壞文件則導入過程中一些導入不成功的記錄則會被保存在這個壞文件中所以對於數據庫管理員來說這個文件有時候往往比數據導入日志文件更加的實用所以筆者建議若企業對於數據導入的准確性要求比較高的畫則在使用SQL*Loader導入數據的時候最好能夠指定這個壞文件這對於我們後續核對導入數據的准確性具有很大的實用價值

  為了更好的使用這個導入工具筆者有如下建議

  在制作數據文件的時候需要注意原有數據表的限制也就使說數據文件中的記錄必須符合數據表的一些約束條件否則不符合條件的數據將無法被導入如需要考慮數據類型是否相符字段長度有沒有超過限制有沒有違反主鍵外鍵的約束等等只有符合這些約束的記錄才能夠被成功的導入否則的話數據將無法被成功裝載為了避免這種情況筆者建議再利用這個工具的時候要指定壞文件只有如此數據庫才能夠再導入的過程中把一些失敗的記錄寫到我們指定的文件中如此我們就可以通過調整然後把這些不符合規則的數據也裝入到數據庫中去

  前台應用程序在設計基礎數據導入功能的時候最好直接采用這個模塊因為這個模塊跟Oracle數據庫集成的比較好能夠最大限度的保障導入數據的准確性而且還可以節省很多前台的程序代碼不過有點值得可惜的是SQL*Loader模塊現在是Oracle數據庫獨享的應用模塊也就是說只有在Oracle數據庫平台上的應用程序才可以直接調用若一個應用程序支持多個數據庫平台的時候則再設計這個數據導入功能的時候需要注意了這不像SQL語句那樣的通用

  在數據導入之前最好先最好相關的數據備份無論是采用圖形化的數據導入工具還是采用命令行的數據導入工具有一個基本的原則大家必須遵守就使在成批導入數據之前必須先作好數據庫的備份如此可以把數據導入錯誤的影響降至到最低

  嚴格限制數據導入的權限雖然可以在後台數據庫中限制SQL*Loader應用模塊的使用權限不過最好還是能夠在前台應用程序中加以控制如在前台應用程序中讓其只有系統管理員才能夠訪問這個基礎數據導入窗口等等因為數據庫的訪問權限在前台實現的話比較靈活而在後台固定死了的話前台系統權限設計往往會失去靈活性這是我們在數據庫設計與前台應用程序設計的時候需要盡量避免的


From:http://tw.wingwit.com/Article/program/Oracle/201311/17470.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.