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
最佳答案
如果您有 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
)
关于linux - 将 oracle 查询结果存储到 bash 变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55068957/