Unix 将sql结果存储到ksh数组中

Unix 将sql结果存储到ksh数组中,unix,ksh,Unix,Ksh,我编写了一个teradata查询函数,它返回结果,当它返回一列时,我可以轻松地将结果存储到变量中。但是现在我想返回多个列并将其存储到一个数组中(我假设),这样就可以通过if语句对第二列结果运行比较操作 目前,我的teradata函数如下所示: #!/bin/ksh td_query () { bteq << EOF |grep '^>' |sed -e "s/^>//" $(cat $HOME/.tdlogon) .set width 1000;

我编写了一个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
}
我想做的就是这样做

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

对于每一行,如果ColB等于某个值,则将ColA中的值用于ksh脚本中的另一个过程。

OP确认注释中的建议有效: 通过管道将输出传输到另一个命令(OP used SED)以用新行替换|,
和使用


田地是怎样分开的?您是否可以在阅读可乐可乐时使用
td_查询“选择'>'| |可乐,表格中的可乐;”;做完成
?好的,结果在一个字符串中返回,因此我将查询更改为。。“选择'>'| |可乐| |','| |可乐| |'|'| | | | |可乐| | |','|可乐| |'|'|'| | | | | | | |..因此结果返回为:rslt1a、rslt1b、rslt2a、rslt2b、rslt3a、rslt3b等…无法计算出如何。您可以使用tr将|替换为,的换行符和IFS作为fieldsep。您可以做一件我在Sybase中可以做的事情。将所需数据从表中提取到临时表中,将行数设置为1。。因此,查询每次只给出一行,并且在每个进程之后,继续删除已处理的行。。。以这种方式,数据格式将不需要在script@WalterA我使用了你的方法,效果很好……我用SED将其替换为新行,然后使用IFS进行fieldsep
arryData=$(td_query "select '>'||ColA, ColB from table;")
| while IFS="," read ColA ColB; do
   echo "Cola = ${ColA}"
   echo "Colb = ${ColB}"
done