sqluldr2使用幾例
sqluldr2 是樓方鑫(d.b.c.a)編寫的一個快速匯出oracle 資料的工具。本文主要介紹如何使用這個工具實現工作中的幾個需求。
一、匯出檔案分卷
對於壓縮檔案winrar, 一個比較深的功能就是壓縮後的檔案還是比較大時,不方便複製時,可以進行分卷壓縮,制定每個壓縮分卷檔案的大小。同樣,對於使用Toad 或者PL/SQL developer 工具導成檔案檔案時,由於缺乏這個功能,常常造成單個檔案過大,生成時間過長。
sqluldr2 工具有一個rows引數,除了類似exp 工具的feedback 引數,每匯出<rows>行資料,自動輸出一行提示資訊外,還可以結合batch 引數,如果batch 引數設為yes, 則每<rows>行資料生成一個匯出檔案。
此外size 引數可以指定匯出檔案的最大的大小。它與rows引數 取更嚴厲的要求來確定分卷檔案的大小。
由於按多個檔案輸出,因此在指定輸出檔名時,需使用動態檔名,例如指定file引數為orders_%B.csv,其中%B表示在多個檔案匯出時,表示檔案序號。
例如,sqluldr2.par 定義為如下:
user=system/manager@dbserver
query=select /*+ parallel(8) */ * from orders
head=no
rows=1000000
file=d:\data\orders_%B.csv
log=d:\data\sqluldr.log
text=CSV
fast=yes
batch=yes
size=500
control=d:\data\order.ctl
mode=truncate
table=orders
執行起來:sqluldr2 parfile=./sqluldr2.par
二、ORACLE跨資料庫的匯入匯出
我們將資料導成文字,其最終目的還是要匯入到其它資料庫。 匯入其它ORACLE資料庫,最快的方法就是使用ORACLE 自帶的sqlldr 工具。
Sqlldr 使用的控制檔案,可以在第一部分中control、mode和table 引數指定後,生成控制檔案,可以修改這個檔案以適合實際使用。
如果我們先把資料導成文字檔案,再使用sqlldr 匯入到資料庫,由於涉及到磁碟的寫入讀取,可能在大資料量時影響速度。因此可以將sqluldr2 的輸出到標準輸出裝置(螢幕),而sqlldr從標準輸出裝置上讀取入庫。
可以將sqluldr2的file 引數設定為”-“, sqluldr2將輸出到標準輸出裝置,修改sqlldr 中的控制檔案的INFILE 引數為"-" (對於windows 和unix 引數),使用管道模式,進行資料匯出裝載。
此外,由於源(sqluldr2匯出的苦)和目標資料庫(sqlldr 匯入庫)的字符集不一樣(這也是我們之所以採用文字匯出方式的原因), 我們可以在NLS_LANG 環境變數和目標資料庫字符集一致的情況下, 設定sqluldr2的charset 引數與源資料庫字符集一致,避免來回修改NLS_LANG 環境變數。
舉例:
在sqlldr 中的控制檔案 指定INFILE 引數:
LOAD DATA
INFILE "-"
源資料庫字符集為US7ASCII ,目標資料庫字符集ZHS16GBK, 當前NLS_LANG 為AMERICAN_AMERICA.ZHS16GBK
sqluldr2 user=system/manager@dbserver1 query="select /*+ parallel(8) */ * from orders where rownum <10" charset=US7ASCII file=- | sqlldr guoge/guoge@dbserver 2control=D:\order.ctl
注意,的INFILE 引數為"-" 對於XE 下的sqlldr 彷彿無效。
三、MYSQL 資料庫的匯入
ORACLE 資料也可以匯入到MYSQL 資料庫,sqluldr2的引數format指定為mysql, 輸出的則為MYSQL語句,可以直接執行。例如:
sqluldr2 comm/comm@dbserver table=app_roles format=mysql quote=0x27 escape=0x53 null=null query=" select * from app_roles" file=- | mysql -h 21.103.117.51 -uroot -pqwxtpwd test
四、匯出後壓縮
sqluldr2 其實可以在匯出是就進行壓縮,文件上說“當檔名(“FILE”選項)的字尾以小寫的“.gz”結尾時,會將記錄直接寫入到GZIP格式的壓縮檔案中”,但彷彿對WINDOWS無效。其實我們可以結合組合命令。例如:
sqluldr2 parfile=./sqluldr2.par && winrar a -afrar -ibck -m5 -df -ep -r orders.rar d:\data
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9036/viewspace-1980591/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle使用sqluldr2匯出資料OracleSQL
- sqluldr2的介紹SQL
- Tee命令的幾個使用例項
- 【譯】在React Hooks 中使用useReducer的幾種用例ReactHookuseReducer
- [轉載] expdp, exp和sqluldr2 速度測試SQL
- 列舉的幾種使用案例(簡單,進階,switch,單例)單例
- LightDB 22.4 新特性之相容Oracle sqluldr2OracleSQL
- 單例的幾種寫法單例
- oracle匯出大數量資料到檔案sqluldr2OracleSQL
- 幾例實用的Shell指令碼指令碼
- 單例模式有幾種寫法?單例模式
- python幾個應用例項Python
- 單例模式你會幾種寫法?單例模式
- java單例的幾種實現方法Java單例
- 記錄幾個例項和解決方案
- 單例模式(下)---聊一聊單例模式的幾種寫法單例模式
- 單例模式(下) - 聊一聊單例模式的幾種寫法單例模式
- 單例模式(下) – 聊一聊單例模式的幾種寫法單例模式
- 面試中單例模式有幾種寫法?面試單例模式
- Android中單例模式的幾個坑Android單例模式
- python正規表示式 小例幾則Python
- C語言中庫函式呼叫幾例(轉)C語言函式
- pinctrl使用例項
- Android生成ViewModel例項的幾種方式AndroidView
- 關於oracle的幾個概念:資料庫、例項、使用者名稱和密碼Oracle資料庫密碼
- Java的幾種建立例項方法的效能對比Java
- 面試突擊50:單例模式有幾種寫法?面試單例模式
- 獲取倒數第幾個元素程式碼例項
- 執行軟體測試用例的幾個注意
- 東北公司使用新套件將幾周變成幾天套件
- tunna工具使用例項
- Tee命令使用例項
- awk命令使用例項
- flex的使用例項Flex
- DHTML Tree 使用例項HTML
- tcl/tk例項詳解——glob使用例解
- 從幾個例項來記憶Activity的生命週期
- 關於python單例的常用幾種實現方法Python單例