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

Storing oracle query results into bash variable

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

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

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

请帮忙。所有建议表示赞赏。我没有运气就检查了所有文档。谢谢你。我正在使用 solaris unix

如果您有 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
)