當需要大數據量的導入導出的數據遷移操作時,效率變得極其重要
oracle數據導出工具sqluldr2可以將數據以csv、txt等格式導出,適用於大批量數據的導出,
導出速度非常快。導出後可以使用oracle loader工具將數據導入。
下載完sqluldr2,文件夾內容如下:sqluldr2_linux32_10204.bin和sqluldr2_linux64_10204.bin分別適用於與linux32位和linux64位操作系統;
sqluldr2.exe用於windows平臺。
導出:在sqluldr2.exe所在的文件夾路徑打開命令行,輸入sqluldr2,回車,可查看相關參數
sqluldr2.exe USER=hh/hh@tiod QUERY="select /*+ parallel(2) */ *from hh.ent_person"
table=ent_person head=yes FILE=C:\ent_person.txt
p.s. head=yes表示第一行爲表頭;並且query也可以寫入一個文件然後使用sql選項。默認分隔字符爲逗號,如果列中有特殊字符,可使用field選項指定新的分隔字符。
數據已經導入到C:\ent_person.txt,幾十萬數據秒速。
使用sqlldr進行導入,首先找到$ORACLE_HOME的bin目錄生成的ctl文件,
當sqluldr2輸入了table='XXXXX 參數時會默認生成ctl文件,以用於導入。
將數據加載到數據庫中:
sqlldr jms/jms@tiod control=ent_person_sqlldr.ctl
log=ent_person_sqlldr.log bad=ent_person_sqlldr_bad.log skip=1
errors=5000 rows=5000 bindsize=335542
p.s. skip=1表示跳過第一行,從第二行開始導入。
注意:默認生成的ctl控制文件,數據入庫方式爲insert,要求要插入
的表裏沒有數據,如果有數據可以將ctl文件中的insert方式修改爲
append。
還有一點當數據量過大時,執行命令就不要設置rows,使用ctl自己配置的行數
(rows= 50000 指五萬條數據提交一次)