1. 程式人生 > >很多人都沒用過的輕量級Oracle數據庫數據導出工具SQLLDR2——性能超贊

很多人都沒用過的輕量級Oracle數據庫數據導出工具SQLLDR2——性能超贊

介紹 path環境變量 默認 ade 類型 rac 技術 運行 下載安裝

SQLLDR2 介紹

每周發表一篇數據庫或大數據相關的帖子,敬請關註

1. 工具介紹

Sqluldr2(SQL * UnLoader 第二版)是靈活與強大的 Oracle 文本導出程序,已被大眾使 用許多年了,有上千個國內外 DBA 在使用它或使用過它,並在使用的過程中提出了寶貴實 用的改進需求,在完善了眾多真實客戶的需求後,最終形成了現在的穩定版本。Oracle 有一 個工具叫 SQL*Loader(sqlldr)是用來將文本文件裝載到數據庫中的,而這個工具是用來將 Oracle 中的數據導出成文本的,因此取名為 SQL*UnLoader(sqluldr),而最後的 2 是因為第一 版是用 OCI 7 接口寫的,而現在發布的是用 OCI 8 接口重寫的,是第二代的意思。學會這樣 的好工具,在遇到數據遷移需求時,可以讓 DBA 輕松自在地完成任務。

1.1. 導出效率:

阿裏巴巴(Alibaba)集團的 DBA 幾年前就開始用 sqluldr 從生產系統中導出巨量數據給數據倉庫分析,並在真實應用環境下 創下了我所見過的文本導出速度的最高記錄, 總共用了 595 秒鐘導出了 171 135 273 條記錄, 平均每秒 287622 條記錄。

1.2. 下載地址:

技術分享

2. 工具安裝

2.1. 下載安裝包並解壓

技術分享

2.2. 配置環境變量

要運行Sqluldr2必須要安裝Oracle的客戶端(Oracle客戶端的安裝方法不在這裏討論),並配置LD_LIBRARY_PATH環境變量.

export LD_LIBRARY_PATH=/opt/oracle/product/11.2.0/dbhome_1/lib:$LD_LIBRARY_PATH

將其中的/opt/oracle/product/11.2.0/dbhome_1/lib替換成你自己的客戶端安裝目錄.

2.3. 執行實例

2.3.1. 查看幫助

選項 格式 作用

query select 指定一個SQL 語句,通常用雙引號括直來。

sql 文件名 指定包括SQL 語句的文本文件名。

field 分隔符 指定字段分隔符,默認為逗號

record 分隔符 指定記錄分隔符,默認為回車換行,Windows 下的換行

2.3.2. 導出一個表的全部數據

技術分享

1258萬條數據,導出只需要100秒左右,效率還是可以的。

2.3.3. 導出一個表的部分數據

技術分享

2.3.4. 導出時指定列分隔符

在上面導出時導出的文件內容如下

技術分享

可以看出列分隔符為“,”,你也可以手動指定列分隔符.

技術分享

通過field屬性手動指定列分隔符.同理你也可以通過record屬性指定行分隔符.

2.3.5. 指定導出文件的風格

通過text屬於指定導出文件的風格

技術分享

可以看出在列類型為varchar2和date的列的導出數據上分別加了雙引號.

2.3.6. 優化

array 數字 指定 Array Fetch 的大小

read 數字 Oracle 一次讀的最大塊數

sort 數字(單位:MB) 指定排序區的大小

hash 數字(單位:MB) 指定 Hash 區的大小

serial yes 指定當全表掃描時用 direct path read

技術分享

通過指定array的大小為20000後,發現導出的速度相比之前快了很多,1258萬條數據只用了17秒.其余的幾個屬性請自己動手驗證.

很多人都沒用過的輕量級Oracle數據庫數據導出工具SQLLDR2——性能超贊