免费注册 查看新帖 |

Chinaunix

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

[文本处理] 读取配置信息,拼接成sql语句的shell,debug [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-09-14 17:06 |只看该作者 |倒序浏览
linux -bash


配置文件是tabcol.lst
#schema  tab    colunm     type           value
cps        tm_cust        name                varchar        name2
cps        tm_cust        corp_nm    int                25
spp   t_bal         colname    varchar     hello


go.sh
-----------------------------------------------------------------------------
#取得要更新的表
cat ini/db2col.lst | sed -e 's/#.*$//g' | awk 'BEGIN{OFS="\t"}{if(NF==5){print $1,$2}}' |sort |uniq |
while read schtab #schemaname tablename
do
    schtab=($schtab)
    schemaname=${schtab[0]}
    tablename=${schtab[1]}
#    echo $schemaname.$tablename
    sqlstr="update $schemaname.$tablename set"
#echo 0 $sqlstr
    colnum=0
    #取得要更新的字段信息
    cat ini/db2col.lst | sed -e 's/#.*$//g' | awk -v sch=$schemaname -v tab=$tablename '{if(sch == $1 && tab== $2){print $3,$4,$5}}' |
    while read lineinfo #col typ val
    do
        lineinfo=($lineinfo)
        col=${lineinfo[0]}
        typ=${lineinfo[1]}
        val=${lineinfo[2]}
        colnum=`expr $colnum + 1`
        if [ $colnum -ne 1 ]
        then
            sqlstr="$sqlstr,"
#echo 1 $sqlstr
        fi
#        echo $col -- $typ -- $val
        if [ "$typ" == "varchar" -o "$typ" == "char" ]
        then
            sqlstr="$sqlstr $col='$val'"
#echo 2 $sqlstr
        else
            sqlstr="$sqlstr $col=$val"
#echo 3 $sqlstr
        fi
echo 4 $sqlstr
    done
echo 5 $sqlstr
#执行sql语句
done

在输出到echo 5 $sqlstr的地方执行sql,但这个地方的字符串没有显示全部。
困扰几天了。请高手们帮看一下。问题出在什么地方。循环内和循环外字符串的值居然不一样

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
2 [报告]
发表于 2015-09-14 17:13 |只看该作者
循环内和循环外字符串的值居然不一样

管道会启动一个 sub shell,打开ABS,看看第 296 页。

Advanced Bash-Scripting Guide 3.9.1 中文版.pdf
http://bbs.chinaunix.net/thread-1610033-1-1.html

论坛徽章:
0
3 [报告]
发表于 2015-09-14 17:23 |只看该作者
膜拜了,大神
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP