Oracle Query在行bash

时间:2017-07-12 11:26:48

标签: bash shell sqlplus

我在Bash中有一个查询(Oracle)

RETVAL=`sqlplus -S /nolog <<EOF
         connect $ORCL_USR/$ORCL_PWD@$ORCL_TNS;
        SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
        select trim(Colm1) from $MyTable 
    EXIT;
    EOF`
 Result="Result.txt"
 touch $Result
 echo "$RETVAL" >> "$Result"
 cat $Result

如果我只选择一列然后结果是正确的,那么每一列(我只有一列)都有一条线 如此。

cat Result.txt
 111
 222
 333

问题是当我尝试查询2列或更多列时 所以在Revalt我说:

  select trim(Colm1),trim(column2) from $MyTable

当我执行Cat $ Result.txt时,结果是:

111
Car
222
Hause
333
Dog

当我希望

111 Car
222 Hause
333 Dog

所以文件的一行中的每一行。

如何实现它?

先谢谢,恩里克

1 个答案:

答案 0 :(得分:1)

您可以使用spool命令获取所需的输出。

sqlplus -S /nolog <<EOF
connect $ORCL_USR/$ORCL_PWD@$ORCL_TNS;
spool filepath/Result.txt
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
select trim(Colm1),trim(column2) from $MyTable 
EXIT;
spool off;
EOF
cat filepath/Result.txt