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

标签 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

最佳答案

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

相关文章:

c - 在 Linux 中的特定 CPU 上运行进程? (不能用命令行指定)

c# - Linux中是否有系统API来提供对文件的原子写操作

linux - 调用二进制文件的整个路径时无法执行该文件

java - 在hibernate数据库中没有响应

sql - 动态插入 -- ORA-00923 : FROM keyword not found where expected

linux - Linux-Unix 中的中文/日文用户名

linux - 如何将中间结果从管道打印到屏幕?

java - 使用 processbuilder 加载所有环境变量

linux - 通过shell将不同文件夹中的文件复制到各自的文件夹中

mysql - 与括号比较时有什么区别 : WHERE (a, b)=(1,2)