将sql结果存储到ksh数组

时间:2015-05-05 18:48:15

标签: unix ksh

我编写了一个teradata查询函数,它返回结果,当它返回一列时,我可以很容易地将它存储到变量中。但是现在我想返回多个列并将其存储到一个数组中(我假设),以便我可以通过if语句对第二列结果运行比较操作。

目前我的teradata功能如下:

#!/bin/ksh
td_query () { bteq << EOF |grep '^>' |sed -e "s/^>//" 
$(cat $HOME/.tdlogon)
     .set width 1000;
      .set titledashes off;
    $1
.LOGOFF;
.QUIT;
.EXIT
EOF
}

然后我可以将查询传递给函数并将其存储为变量:

rwCnt=$(td_query "select '>'||count(*) from table;")

我想要做的是查询像这样的事情

arryData=$(td_query "select '>'||ColA, ColB from table;")

以每行的方式存储,如果ColB等于某个值,则使用ColA中的值作为ksh脚本中的另一个过程。

1 个答案:

答案 0 :(得分:2)

OP确认评论中的建议有效: 将输出管道传输到另一个命令(OP使用SED)来替换|用新的一行,
并使用

| while IFS="," read ColA ColB; do
   echo "Cola = ${ColA}"
   echo "Colb = ${ColB}"
done