2017-06-22 26 views
0

私はリモートでOracleデータベースにアクセスしています。結果をローカルのcsvファイルにリダイレクトする必要があります。私はいくつかのオプションを設定しています、単純なSQLクエリステートメントと私はローカルファイルにリダイレクトします。 私がやったことを、このlinkthisに基づいて: "選択" の未知のSETオプション:SP2-0158:私はこのOracleエラーが出ることを行うsqlplusクライアントリモート結果をローカルファイルにリダイレクト

./sqlplus user/[email protected]:1521/SID <<< "SET PAGESIZE 40000 FEEDBACK OFF MARKUP HTML ON select * from mytable where ROWNUM <= 10" >> test_file.xls 

。エラーは自明です。私は私の出力をフォーマットするために、これらのset文が必要であることを知っていますSETステートメントを削除するとうまく動作しますが出力されます

出力するには、ファイルがリモートマシン上に生成されるため、私はSPOOLステートメントを挿入しません。

結果をローカルファイルに取得するにはどうすればよいですか?

+1

私はあなただけ 'on'のと' SELECT'の間にセミコロンが必要だと思います。 heredocは管理するのが簡単かもしれません。なぜあなたはリモートマシン上のスプール出力を考えるのですか?それはクライアントコマンドです。 –

+0

@AlexPoole私はこれまでに試したことがあります:SP2-0158:不明なSETオプション ";" – learner

答えて

1

それを試してみてください。

./sqlplus user/[email protected]:1521/SID <<EOF >> test_file.xls 
SET PAGESIZE 40000 FEEDBACK OFF MARKUP HTML ON 
select * from mytable where ROWNUM <= 10; 
exit 
EOF 
+0

@ ser3515709それは動作します。この場合、EOFは正確に何ですか?そして、もう一つは、出力はもちろん、htmlで来る。私の意志はxls – learner

+0

を生成することです。あなたはEOFという言葉が見つかるまで、すべてをコマンドにリダイレクトします。 「FOO」や「<<! また、HTML出力は、MARKUP HTMLをONにして、HTMLを認識してファイルが正常に開くように見せてくれるものです。 –

関連する問題