用shell幫助解決ORA問題
今天碰到一個設計的嚴重問題,由於使用了外部檔案來和sqlplus互動
sql大體結構如下
select xxxxx from xxxxx where table_name in ( "解析外部檔案“)
在測試環境中沒有什麼問題,當某個使用者表比較多的時候,就開始報如下的錯誤
*
ERROR at line 1003:
ORA-01795: maximum number of expressions in a list is 1000
********************************************************************************
因為需要,一定要解析這個外部檔案,所以只能從別的方面進行考慮進行解決。
我加了了分頁的改進,沒500條記錄分為一頁,這樣迴圈呼叫就可以生成最終的檔案了。
v_page_size=500
v_page=1
v_start=1
v_len=`expr ${v_page} \* ${v_page_size}`
minus_file_len=`cat ${minus_list}|wc -l`
#pages_flag=`expr ${minus_file_len} / ${v_page_size}`
pages_float=`echo "scale=2 ; ${minus_file_len} / 500"|bc`
pages_num=`echo '' | awk -v a=$pages_float '{print int(a+0.999)}'`
--上面的這一段基本就是要實現oracle中ceil的部分,比如有700條記錄,500條一頁,這樣700/500就是1.4,根據需要,需要返回2.
然後開始迴圈,控制下標,
while [ ${v_page} -le ${pages_num} ]
do
echo ...............................
echo 'from Source :' $S_DB_STR
echo from:$v_start
echo end:$v_len
echo page no: $v_page
echo ...............................
sed -n "${v_start},${v_len}p" ${minus_list} > $SCHEMA_DIR/table_list.log
minus_tab_list=`cat ${SCHEMA_DIR}/table_list._${v_page}.log|awk '{print "'\''" $1 "'\'',"}'`
get_tab_details $S_DB_CONN_STR --這個部分是呼叫sqlplus的部分,傳入連線串
v_start=`expr ${v_page} \* ${v_page_size} + 1`
#v_page=$[ $v_page + 1 ]
v_page=`expr ${v_page} + 1`
v_len=`expr ${v_page} \* ${v_page_size}`
done
輸出結果如下:
from:1
end:500
page no: 1
...............................
資料內容
from:501
end:1000
page no: 2
...............................
xxx
這樣不管資料量有多大,都可以靈活的進行拆分。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25462274/viewspace-1979040/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 新手開發遇到問題,求幫助解決!!!
- CRM系統能幫助企業解決哪些問題?
- ERP系統可以幫助企業解決哪些問題
- 雲真機可以幫助測試解決什麼問題?
- CRM系統幫助企業解決管理上難解決的問題(下)
- CRM系統幫助企業解決了哪些商機問題?
- 人工智慧再出手,幫助解決鋰電池爆炸問題人工智慧
- ERP系統能夠幫助企業解決什麼問題
- ora -03232 問題解決
- ORA問題解決網站網站
- 有問題問男人,linux幫助文件-----man命令講解Linux
- shell程式設計幫助(轉)程式設計
- Android vitals 幫您解決應用質量問題Android
- 批發分銷ERP系統可以幫助企業解決什麼問題?
- 模切ERP系統如何幫助模切企業解決倉庫問題
- ORA-06512 問題解決
- ORA-03113問題解決
- Oracle問題解決方法ORA-0Oracle
- ORA-12528問題解決
- ora-01756問題的解決
- exp時報ORA-29275問題解決
- ora-3136問題的解決
- SoundSource5幫你解決音量問題
- 執行 shell 指令碼 \r 問題解決指令碼
- Shell 解決Redis Slow Log去重問題Redis
- ERP系統物料替代解決方案,幫助企業解決物料管理難題
- 好用的CRM系統幫助企業解決管理難題(上)
- ORA-24756: transaction does not exist問題解決
- ORA-12528問題的解決
- oracle ORA-00824 問題解決 (一)Oracle
- oracle ORA-00824 問題解決 (二)Oracle
- ora -03232 問題解決【Blog 搬家】
- ora-02085問題解決
- ORA-00600 2662問題解決
- 充電樁+立體車庫,領充幫助解決停車難、充電難問題
- 韓國研究人員研發機器人Fribo,可幫助年輕人解決孤獨問題機器人
- Unix shell解決實際問題指令碼(1)指令碼
- Unix shell解決實際問題指令碼(2)指令碼