2017-07-12 6 views
0

私はそのOracleのクエリは、ラインbashで、全行を返す

RETVAL=`sqlplus -S /nolog <<EOF 
     connect $ORCL_USR/[email protected]$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 

問題は、私はRevaltでそう2列 以上を照会しようとしたとき、私は入れている:

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

を私は猫$ Result.txtを行うときの結果は次のとおりです。

111 
Car 
222 
Hause 
333 
Dog 
私が望むだろう

111 Car 
222 Hause 
333 Dog 

ファイル内の行のすべての行。

どのように達成できますか?事前に

おかげで、エンリケ

+1

テーブルの列データ型は何ですか?出力が広すぎるために出力がラップされているように見えます。 '' linesize'を設定する必要があるならば、[可能な複製](https://stackoverflow.com/q/3006431/266304)。 –

+0

こんにちは@AlexPoole私は同じColumn1 - > nummber、Column2-> Varchar 255、それをthoung Thoungあなたが言ったようです。私はそれを試してみます。 – Enrique

+1

OK、 'LINESIZE 300'を' SET'コマンドに追加してみてください。なぜあなたは 'trim()'を数字に使うのですか?それは右の代わりに左に揃えられていますか? 'to_char()'を使う方が直感的です。 –

答えて

1

あなたは所望の出力を得るためにスプールコマンドを使用することができます。

sqlplus -S /nolog <<EOF 
connect $ORCL_USR/[email protected]$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 
+0

こんにちは@Lohitアイデアのおかげで、スプールと私はまったく同じ結果を持っています。 – Enrique

+1

@Enriqueは列の列幅をチェックし、それに応じて行数を設定します。私は、行の幅が列の幅を超えていると思います。 –

+0

こんにちは@Lohit私はそれをしましたが、それは良くなりませんでした。 :/ – Enrique

関連する問題