免费注册 查看新帖 |

Chinaunix

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

一个转化db2 select 语句输出的脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-24 09:18 |只看该作者 |倒序浏览
最近在db2 下工作,对db2 select 语句的输出排列感到不能容忍,便写个这个小脚本,使select语句的输出象informix isql的form查询那样。


#!/usr/bin/ksh


# This script was created by Valentine


# if you prefer informix isql's output format to db2's,


#     you can enjoy this small tool!


#   Usage: sel "SQL_STATEMENT"


#      exp:  sel "* from mytable where a>'1' fetch first 2 rows only"


#


#               valentine 2003/09/05


#





DB=${DEFAULTDBS:-${LOGNAME}}


SCHEMA=${SCHEMA:-"schema"}


TMPDIR="/tmp"


TMPFILE1=$TMPDIR/sqldata.$$


TMPFILE2=$TMPDIR/export.$$





myexit()


{


       echo "You canceled the operation"


       rm -f $TMPFILE1 >/dev/null 2>&1


       rm -f $TMPFILE2 >/dev/null 2>&1


}





[ $# -lt 1 ] && echo "Usage: `basename $0` SQL_SELECT_STATEMENT" && exit


trap "myexit" 2 3


fields=`echo "$*"|sed  's/\(.*\)from.*/\1/'`


table=`echo "$*"|sed  's/.*from *\([^ ]*\) *.*/\1/'|tr "[a-z]" "[A-Z]"`


where=`echo "$*"|sed 's/.*from/from/'`





db2 "connect to $DB" >/dev/null 2>&1||{ echo "can't connect  $BTPDBS";exit;}


db2 "set schema $SCHEMA"  >/dev/null  2>&1


db2 "describe select $fields from $table"|sed -e '1,9d' -e '$d' -e 's/,./,/g'|aw


k '{printf("%s|",$4)}END{print}'  >$TMPFILE1 2>/dev/null


db2 "export to $TMPFILE2 of del modified by coldel| select $fields $where" >/dev


/null 2>&1


cat $TMPFILE1 $TMPFILE2|tr -d '"' |sed 's/\([+,-]\)0*/\1/g'|awk -F'|' '{if(NR==1){split($0


,field)} else{for(i=1;i<=NF;i++){printf("%s [%s]\n",field

,$i);}print("")}}'





rm -f  $TMPFILE1


rm -f  $TMPFILE2


trap 2 3
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP