sqlldr是oracle自帶的快速導入批量數據的工具,常用於性能測試。考慮手工構造控制文件較為繁瑣,因此使用腳本完成批量數據的自動導入。
基本知識
sqlldr命令語法
sqlldr dbname/dbpassword@oracle_sid control=control.ctl log=sqlldr.log bad=sqlldr.bad
選項介紹
1、control 控制文件:包含導入數據和表的信息 2、log 日志文件:導入過程中的日志記錄 3、bad 失敗文件:導入失敗的數據記錄 4、rows 每次提交記錄數 5、bindsize 每次提交記錄的緩沖區大小 6、direct 使用直接路徑導入,默認為false 7、parallel 並行導入
控制文件格式
load data infile 'datafile' append into table tablename fields terminated by '|' ( col1, col2 )
設計思路
核心是創建sqlldr導入使用的控制文件
1、從USER_TAB_COLUMNS表中獲取輸入的欲導入數據標的表結構屬性(列名和類型);
2、對DATE和TIMESTAMP類型進行轉換,完成sqlldr要求的控制文件格式。
3、調用sqlldr命令執行自動導入數據。
腳本使用
1、下載代碼:loadOradata.sh,上傳到oracle用戶任意目錄下。
2、登錄oracle用戶,執行chmod +x loadOradata.sh賦可執行權限。
3、執行./loadOradata.sh 數據庫名/數據庫密碼 待導入的表名 構造生成的數據文件。
說明:建議在導入數據前先備份並清理待導入的表。原因是sqlldr命令的direct=True,,可能會由於存在重復數據導致索引失效。