如何在 shell 脚本中运行 SQL 查询时获得类似 SQLPLUS 的输出

Posted

技术标签:

【中文标题】如何在 shell 脚本中运行 SQL 查询时获得类似 SQLPLUS 的输出【英文标题】:How to get output like SQLPLUS while Running SQL Query in shell script 【发布时间】:2013-08-04 08:17:53 【问题描述】:

我有一个如下的 shell 脚本

RETVAL=`sqlplus -silent user/password <<EOF
SET PAGESIZE 9990

SELECT   id, type, count(*) "count" FROM event

EXIT;
EOF`

echo $RETVAL

它的输出像

ID 类型计数 ------------- ---------- ----------- 2 11 2 1 4 1 2 10 29 1 1 35 2 1 6 2 18 1 2 2 3 7 行已选择

但我想要像这样的输出

ID              TYPE        count
------------- ---------- -----------
        2         11           2
        1          4           1
        2         10          29
        1          1          35
        2          1           6
        2         18           1
        2          2           3

已选择 7 行。

我试图弄清楚我是否得到了一些换行符,但找不到。

问候,

【问题讨论】:

【参考方案1】:

您的变量包含换行符,但您显示它的方式会删除它们。

echo 语句替换为:

echo "$RETVAL"

这样,shell 就不会弄乱换行符了。您几乎应该总是引用可以包含需要保留的任何形式的空格的变量。

【讨论】:

以上是关于如何在 shell 脚本中运行 SQL 查询时获得类似 SQLPLUS 的输出的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 UNIX shell 脚本并行运行一个进程多次?

如何在 Shell 脚本中运行多个 SQL 脚本文件

使用 Shell 脚本运行 SQL 查询并返回 CSV 格式的输出

如何查看hivesql里执行了哪些查询

如何避免作为 sql 查询输出的一部分返回的字符串值被拆分为 bash/shell 脚本中数组中的不同字段

shell中调用sql 语句,再将结果返回shell作为变量