商量Oracle資料庫的資料匯入辦法 2

2022-08-29 14:45:17 字數 2812 閱讀 1072

前導發軔:csdn

這種辦法為匯入資料掀開了新的一扇門。你可以很方便的將內部檔案與資料庫相干聯,並且在資料庫中設立設定裝備擺設對應的 external table,然後就可以立刻盤問資料,就象內部資料已經匯入到資料庫表中一樣。獨一的缺乏需求清楚,資料並未真正匯入到資料庫中,當內部檔案被刪除或掩蓋時,資料庫將不能訪問 external table 裡的資料,並且索引沒有被設立設定裝備擺設,訪問資料速度將有所遲緩。設立設定裝備擺設 calls_external(external table表)如下,使之與內部資料檔案關聯:

create table calls_external

(call_id number,

call_date date,

emp_id number,

call_type varchar2(12),

details varchar2(25))

organization external

( type oracle_loader

default directory extract_files_dir

access parameters

(records delimited by newline

fields terminated by 』,』

missing field values are null

(call_id, call_date char date_format date mask

"yyyy-mm-dd:hh24:mi:ss",

emp_id, call_type, details))

location (』calls.dat』)

);

然後將 external table 與真正被利用的表 calls 關聯同步,刪除 calls 表偏重修它:

create table calls

(call_id number not null,

call_date date not null,

emp_id number not null,

call_type varchar2(12) not null,

details varchar2(25)

)tablespace tbs1 nologging

asselect call_id, call_date, emp_id, call_type, details

from calls_external;

sql*loader 是 oracle 供給的匯入實用遞次,分外針對從內部檔案匯入年夜批量資料進入資料庫表。該物件已經有多年的歷史,每一次版本晉級都使其更加茂盛、靈敏和快捷,但遺憾的是它的語法倒是詭秘而不直**觀,並且只能從命令列視窗處脅制挪用。

雖然它有不直**觀的缺陷,但倒是最快最有用的匯入資料辦法。預設徵象下它利用 "conventional path" 通例選項來批量匯入資料,其功用進步度並不顯著。我倡議利用更快速的匯入引數選項,在命令列新增"direct=true" 選項挪用 "direct path" 導中選項。在 "direct path" 匯入完成中,遞次在資料庫表的新資料塊的 high water mark 處間接寫入匯入資料,延伸了資料拔出的處置責罰時光,同時優化利用了極度有用的b 二叉樹辦法來更新表的索引。

運用這種辦法,要是利用預設的 conventional path 導中選項,總的匯入時光是 81 秒,程序占用 cpu 時光年夜約是 12 秒,這蒐羅了更新表的索引時光。要是利用 direct path 導中選項,總的匯入時光竟是 9 秒,程序占用 cpu 時光也僅僅是 3 秒,也蒐羅了更新表的索引時光。

由此可見,雖然表中的索引在資料匯入之前並沒有被刪除,利用sql*loader的direct path 導中選項仍然是快速和有用的。雖然它也出缺陷,就像nologging要害字一樣該辦法不天生redo日記資料,匯入程序蛻化後將無法例復到先前狀況;在資料匯入程序中表的索引是不起傳染的,使用者此時訪問該錶時將呈現遲緩,雖然在資料匯入的程序中最好不要讓使用者訪問表。

分割槽互換 (partition exchange)

分割槽互換操縱將極度快速地只更新calls表的資料字典,part_01012004分割槽表馬上擁有calls_temp表的所稀有據,而calls_temp表變為空表。假定calls表利用部分索引而非全域性索引,上述語句中的including indexes將擔保分割槽互換蒐羅索引的可用性,without validation 指明不反省瓜代表中資料的結婚,加速了互換的速度。

結論

以上商量了oracle資料庫的多種資料匯入辦法,每種辦法都有其優缺陷和實用情況,可以滿足你不合的匯入需求,雖然你需求在觀念了這些辦法後,在速度、淺易性、靈敏性、可恢復性和資料可用性之間追求最佳匯入方案。

為了比照各種辦法的結果,我們設立設定裝備擺設了乙個例項來展示各種辦法的匯入遵守和結果,從中你可以選擇最得當的辦法用於此後的資料匯入任務。同時請記著,本文並未囊括一切的oracle資料匯入技術(歧並行資料匯入技術),這需求我們繼續不懈的探索和嘗試。

資料匯入辦法

總體匯入時光(秒)

匯入程序占用cpu時光(秒)

逐條資料拔出insert

172

52 逐條資料拔出insert,表暫無索引

13035

批量拔出,表暫無索引

14 7

create as select,利用oracle9i的external table

15 15

8 sql*loader conventional path 預設導中選項

8112

sql*loader direct path 導中選項

9

oracle資料庫導庫問題

一 dmp導庫過程中,資料量小的表匯入成功,到資料量大的表時開始報錯。發現原庫的表空間是users,匯入新庫後預設表空間是users,根據錯誤提示檢視新庫的的表空間users空間不大。採取源庫 新庫的表空間更換。imp 00058 遇到 oracle 錯誤 1653 ora 01653 表 zrzy...

將EXCEL導到oracle資料庫

將excel導到oracle 資料庫,我目前了解到一種途徑是 1 將excel另存為csv檔案 2 在pl sql developer裡將csv檔案內容導進oracle 展開說下步驟2 1 開啟pl sql developer,登入資料庫 2 工具 文字匯入器 3 在文字匯入器裡開啟csv檔案 注意...

oracle版本11,10資料庫之間資料匯入匯出

需要把伺服器上的資料庫導到本地做測試,其中有乙個張資料量過大,不用匯出。目前用的exp imp無法實現某些表不用匯入匯出的功能,10g以後可以採用expdp impdp。伺服器 user bpm pwd bpm sid bpm,表空間 xcc,不導sk表,操作如下 1 sqlplus nolog 2...