将Oracle查询结果存储到bash变量中

时间:2019-03-08 18:25:47

标签: linux bash oracle unix solaris

declare -a result=`$ORACLE_HOME/bin/sqlplus -silent  $DBUSER/$DBPASSWORD@$DB << EOF $SQLPLUSOPTIONS $roam_query exit; EOF`

我正在尝试从oracle数据库中提取数据并填充bash变量。选择查询有效,但是它返回多行,并且这些行作为长连续字符串返回。我想从数据库中捕获数组索引中的每一行,例如:

index[0] = row 1 information
index[1] = row 2 information

请帮助。所有建议表示赞赏。我检查了所有文档,但没有运气。谢谢。我正在使用solaris Unix

1 个答案:

答案 0 :(得分:0)

如果您使用bash版本4,则可以使用readarray -t命令来执行此操作。任何最近模糊的linux都应该具有bash v4,但我不知道Solaris。

顺便说一句,我还建议使用双引号将变量引用(例如"$DBUSER/$DBPASSWORD@$DB"而不只是$DBUSER/$DBPASSWORD@$DB)(在本文档中除外),使用$( )而不是反引号,并使用小写或大小写混合的变量名(一堆具有特殊含义的全大写字母名,如果您偶然使用其中一个,可能会发生奇怪的事情)。

我不确定我是否拥有这里文档(SQL命令),但是大致是我的处理方法:

readarray -t result < <("$oracle_home/bin/sqlplus" -silent  "$dbuser/$dbpassword@$db" << EOF
$sqlplusoptions $roam_query
exit;
EOF
)