将 sql 结果存储到 ksh 数组中

storing sql result into an ksh array

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

目前我的 teradata 函数如下所示:

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

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

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

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

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

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

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

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