微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mapfile 无法将 sql 输出转换为数组变量

如何解决mapfile 无法将 sql 输出转换为数组变量

我正在尝试从 oracle 表中获取 ID 列表并将其存储为数组变量。尝试使用 mapfile 填充变量效果不佳。从查询返回的 10 行被视为单行。参数 -t 没有帮助。

我的计划是将这个数组变量与另一个数组(.txt 文件将作为其来源)一起使用,以交叉验证值的存在。

#!/bin/sh

temp_id_list=`sqlplus -silent ${o_schema_name}/${o_schema_pwd}@$o_db_name <<EOF 
whenever sqlerror exit sql.sqlcode
SET PAGESIZE 0 FeedBACK OFF VERIFY OFF heading OFF ECHO OFF 
SELECT disTINCT memid FROM members WHERE ROWNUM < 11;
EXIT;
EOF`

mapfile -t id_list <<< ${temp_id_list}
echo "encoding details for a file : ${id_list[@]}"
echo "Number of elements in id_list: ${#id_list[@]}"    

上面的输出

values in array: 220000068 220000163 220000188 220000232 220000239 220000261 220000815 220000909 220000914 220001074
Number of elements array: 1

总而言之,从 | 分隔的文本文件中动态选择的一列需要与 Oracle 表中可用的等效源进行交叉验证。表和平面文件都可能有大量的行。所以,试图获得一个强大的解决方案。

提前致谢。

更新:将变量添加到双引号后即可正常工作 mapfile -t id_list <<< "${temp_id_list}"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。