使用sqlload導(dǎo)文本數(shù)據(jù)到oracle中想必很多人多使用過,但是倘若有幾百或者幾千個(gè)數(shù)據(jù)文本,或者實(shí)時(shí)有文本數(shù)據(jù)產(chǎn)生。這種場景如何批量導(dǎo)入oracle呢,下面就來講解下我處理的方式。
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供冷水江網(wǎng)站建設(shè)、冷水江做網(wǎng)站、冷水江網(wǎng)站設(shè)計(jì)、冷水江網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、冷水江企業(yè)網(wǎng)站模板建站服務(wù),十余年冷水江做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。1.shell腳本LoadData.sh如下
#!/bin/bash data_dir=/home/bea/datasource/warn-log/dayflow # 文本數(shù)據(jù)目錄 data_dir_bak=/home/bea/datasource/warn-log/dayflow_bak shell_dir=/home/bea/script while [ 1 ] do cd $data_dir if [ `pwd` == $data_dir ] then filelist=`ls -rt | grep dayflow.log_.` #數(shù)據(jù)文本文件名匹配 fi #echo $filelist cd $shell_dir if [ `pwd` == $shell_dir ] then for file in $filelist do date=`date "+%Y%m%d %H:%M:%S"` export LoadFileName=$data_dir"/"$file #這個(gè)地方很重要,要加載變量到環(huán)境中 echo "Time is $date ,開始導(dǎo)$LoadFileName數(shù)據(jù)" sqlldr user_1/123456@213_db control=dayflow.log.ctl BAD=dayflow.log.bad echo "Time is $date ,$LoadFileName數(shù)據(jù)導(dǎo)入完畢" echo "開始備份文件$file" mv $LoadFileName $data_dir_bak echo "$file備份完畢" done fi done這個(gè)地方最應(yīng)該要注意的是
export LoadFileName=$data_dir"/"$file這里將LoadFileName (導(dǎo)入oracle 的文本,絕對(duì)路徑)這個(gè)變量 export到linux環(huán)境中,這樣sqlload的控制文件就可以讀到這個(gè)變量并進(jìn)行導(dǎo)入
2.sqlldr控制文本dayflow.log.ctl
load data CHARACTERSET AL32UTF8 infile '$LoadFileName' APPEND into table user_1.BIL_FLUX_HIGH_CUR fields terminated by '|' trailing nullcols (ACCS_NBR "TRIM(:ACCS_NBR)", DATE_ID "TRIM(:DATE_ID)", TOTAL_FLUX "TRIM(:TOTAL_FLUX)", sys_date "sysdate")請注意 infile '$LoadFileName',這里就是shell中 剛才export的變量,通過這種方式就可以以變量的形式傳入文件名,那么批量導(dǎo)入也就是一個(gè)循環(huán)的操作。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。