免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5388 | 回复: 8
打印 上一主题 下一主题

用shell抽取,更新db2的数据  关闭 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-05-12 16:42 |只看该作者 |倒序浏览
最近由于工作需要,在写用shell进行db2数据处理的程序。连日来,流连于ChinaUnix的Shell论坛中,从网中人等版主和前辈帖子中学到了许多东西,很大的帮助了我顺利完成任务。有感于前辈们的无私精神,决定将我在这几天得到的用shell进行db2数据处理的经验奉献出来,和大伙交流,共同提高。

★用shell抽取db2的数据,并进行处理

  1. #SQL文定义
  2. SQL="SELECT AAA, BBB, CCC FROM MYTBL1"
  3. #执行SQL
  4. SDATA=`db2 "$SQL"`
  5. #返回值判断
  6. if [ $? -ne 0 ]
  7. then
  8.   #显示db2返回的错误信息
  9.   echo "$SDATA"
  10.   exit 1
  11. fi
  12. #对取得的数据进行处理。
  13. echo "$SDATA" | sed -e '4,/^$/!d;/^$/d' |
  14.   while read AAA BBB CCC
  15.   do
  16.     echo "AAA IS $AAA, BBB IS $BBB, CCC IS $CCC"
  17.   done
  18. #取得数据件数
  19. echo "$SDATA" | sed -n -e '/^$/{1,3d;n;s/[^0-9]*\([0-9]*\)[^0-9]*/\1/;p;}' | read CNT
  20. echo "The count of selected data is $CNT."
  21. exit 0
复制代码


★更新db2的数据,并取得更新结果

  1. SQL="UPDATE MYTBL1 SET AAA='2005',BBB='05',CCC='12'"
  2. #执行SQL
  3. SDATA=`db2 -a "$SQL"`
  4. #取得SQLCODE
  5. echo "$SDATA" | sed -n -e 's/^.*sqlcode: \([-,0-9][0-9]*\).*/\1/p' | read SQLCODE
  6. echo "Sqlcode is $SQLCODE."
  7. #取得SQLSTATE
  8. echo "$SDATA" | sed -n -e 's/^.*sqlstate: \([-,0-9][0-9]*\).*/\1/p' | read SQLSTATE
  9. echo "Sqlstate is $SQLSTATE."
  10. #取得更新件数(即sqlerrd的第三个值)
  11. echo "$SDATA" | sed -n -e '/sqlerrd/s/^.*(3) \([-,0-9][0-9]*\).*/\1/p' | read UPDCNT
  12. echo "Updated data's count is $UPDCNT."
  13. #取得sqlerrd的第五个值
  14. echo "$SDATA" | sed -n -e '/sqlerrd/{n;s/^.*(5) \([-,0-9][0-9]*\).*/\1/;p;}' | read SQLERRD5
  15. echo "Sqlerrd(5) is $SQLERRD5."
复制代码

论坛徽章:
0
2 [报告]
发表于 2005-05-12 16:43 |只看该作者

用shell抽取,更新db2的数据

高深,替你顶一下。

论坛徽章:
0
3 [报告]
发表于 2005-05-12 16:44 |只看该作者

用shell抽取,更新db2的数据

佩服....

论坛徽章:
0
4 [报告]
发表于 2005-05-12 16:45 |只看该作者

用shell抽取,更新db2的数据

呵呵,还可以哈

论坛徽章:
0
5 [报告]
发表于 2005-05-12 19:40 |只看该作者

用shell抽取,更新db2的数据

不错,我就是看到sed就头晕~

论坛徽章:
0
6 [报告]
发表于 2005-05-13 14:10 |只看该作者

用shell抽取,更新db2的数据

我也想好好学shell,有空向各位请教呀。

论坛徽章:
0
7 [报告]
发表于 2005-05-13 17:10 |只看该作者

用shell抽取,更新db2的数据

收藏

论坛徽章:
0
8 [报告]
发表于 2005-05-20 10:14 |只看该作者

用shell抽取,更新db2的数据

相当不错!

论坛徽章:
0
9 [报告]
发表于 2008-09-03 07:35 |只看该作者
把这个顶起来,刚好要用这些东西。。。

有个疑问:
执行SELECT 用 :SDATA=`db2 "$SQL"`
执行UPDATE用 : SDATA=`db2 -a "$SQL"`  
其中有个 -a 的差别 ,有什么不同?
如果是其他的SQL 比如说 DELETE ,INSERT 该怎样用参数??
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP