Chinaunix

标题: SHELL怎样像游标一样对SQL查询结果集进行循环? [打印本页]

作者: Rawu    时间: 2005-05-26 18:34
标题: SHELL怎样像游标一样对SQL查询结果集进行循环?
SHELL怎样像游标一样对SQL查询结果集进行循环?
比如 select A,B,C,count(1) AS D from table group by A,B,C
结果是
A B C D
----------
1 5 Q 3
2 6 W 3
3 7 R 4
4 8 T 5

现在如果想像游标一样一行一行的获取A,B,C,的值
再用这些值组合成命令运行,
知道所有行都处理完毕为止,那么 该怎么实现?
我的做法是先把结果集定向到一个文件
再用 while [ $# -gt 0] 作循环
分别用
a=`awk {print $1} file`
b=`awk {print $2} file`
c=`awk {print $3} file`
获取每行的变量值
但每个变量获取的却是整个列的值。
哪位DX 指教一下
作者: dradhzn    时间: 2005-05-26 23:39
标题: SHELL怎样像游标一样对SQL查询结果集进行循环?
#!/bin/sh
while read line
do
set $line
echo $1 $2 $3 $4
echo =do sth here===
echo =done, next line=
echo
done < urfile
作者: 随风漂    时间: 2005-05-27 08:56
标题: SHELL怎样像游标一样对SQL查询结果集进行循环?
可是用使用awk和sh来完成,举例说明:
awk '{print "yourcode",$1,$2}' filename|sh
作者: ldchope    时间: 2005-05-27 14:07
标题: SHELL怎样像游标一样对SQL查询结果集进行循环?
#!/bin/sh
n=1
# export n  
m=`awk 'END {print NR }' readme`
echo $m, $n
while [ $n -le $m ]
do
line=`awk  '{ if ( NR == '"$n"' ) print}' readme`
a=`echo $line|awk '{print $1}'`
b=`echo $line|awk '{print $2}'`
c=`echo $line|awk '{print $3}'`
d=`echo $line|awk '{print $4}'`
echo "$a,$b,$c,$d"
n=`expr  $n + 1 `  
sleep 5
done
前一阵子写的,你应该用的上
作者: Rawu    时间: 2005-05-29 02:11
标题: SHELL怎样像游标一样对SQL查询结果集进行循环?
谢谢 各位 ,我先试试。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2