博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用shell帮助解决ORA问题
阅读量:2445 次
发布时间:2019-05-10

本文共 1631 字,大约阅读时间需要 5 分钟。

今天碰到一个设计的严重问题,由于使用了外部文件来和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/23718752/viewspace-772851/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23718752/viewspace-772851/

你可能感兴趣的文章
vim 关闭查找_如何打开或关闭查找我的iPad
查看>>
linux rev命令_如何在Linux上使用rev命令
查看>>
slack财报_如何将自己的表情符号添加到Slack
查看>>
juicer hic使用_使用Sound Juicer在Linux中翻录音频CD
查看>>
如何在Microsoft表单中添加分支
查看>>
在“提示”框中:删除Windows 8安全启动,从Media Center启动应用程序,并加快Windows安装速度...
查看>>
修改时序约束改变slack_如何更改Slack的默认表情符号肤色
查看>>
如何在iPhone,iPad和Mac上禁用Safari经常访问的起始页
查看>>
vscode变假期不提示_12个假期的家庭技术支持提示
查看>>
将电视频道徽标添加到Windows 7 Media Center
查看>>
改善Google Chrome中的YouTube视频观看
查看>>
配置您的计算机以备份到Windows Home Server
查看>>
解决Windows Home Server Toolkit的连接问题
查看>>
如何在Windows 10中打印照片
查看>>
如何在离开时自动检测巢穴
查看>>
ubuntu显示管理器_如何在Ubuntu的文件管理器中显示导航栏而不显示面包屑
查看>>
关于极客
查看>>
自定义日历_如何在网络上自定义Google日历的通知
查看>>
hue功能_Philips Hue的“新实验室”部分中的最佳实验功能
查看>>
微软office在线文档_如何使用Microsoft Office密码保护文档和PDF
查看>>