回答:
アルン、
sqlclはOracle SQL Developer 4.1 EA2(4.1.0.18.37)から入手 できるようになったので、古くて有名なsqlplusと同じように使用できます。sqlclにはcsvの出力形式設定があります
set sqlformat csv
spool x.csv
select * from yourtable[s];
spool off
sqlcl checkout Krisのブログの詳細については
sqlclが最も簡単になる前は、APEXを使用してレポートをcsvにエクスポートしていました。普通の古いsqlplusでは、これを使用してこれを行うことができます
set lines 9999 -- the appropriate size
set head off -- no header lines
set colsep ';' --column separator to ;
set pages 0 -- no pages
set feed off
select your data;
spool to_tofile
/
spool off
これは、結果をアプリケーションサーバーまたはクライアントに書き込む場合に最適です。データベースサーバーに書き込む必要がある場合は、utl_fileの方が適している可能性があります。
ロナルド。
組み込みのUTL_FILEパッケージを確認する必要があります。使用方法はいくつかあります。
UTL_FILEパッケージを使用して任意の数のファイルに書き込むパッケージに、任意の数のプロシージャを記述できます。これらのプロシージャは、SQL * Plusを含むほとんどすべてのアプリケーションからコールできます。
同じ作業を行うPL / SQLスクリプトを記述し、コマンドラインで@scriptnameを指定することにより、SQL * Plusコマンドライン自体からスクリプトを呼び出すことができます。
UTL_FILEを使用してブロックを直接SQL * Plusに貼り付けることもできますが、これは1回のエクスポートにのみ使用する必要があり、それでも最適なルートではない場合があります。
最も簡単な例では、UTL_FILEを使用したファイルエクスポートは、FOPENへの呼び出し、PUT_LINEへの1つ以上の呼び出し、およびFCLOSEへの呼び出しで構成されます。
Pythonおよびcx_Oracleモジュールを使用して、CSV形式でデータをディスクに抽出できます。
cx_Oracleを使用してOracleに接続する方法は次のとおりです。
constr='scott/tiger@localhost:1521/ORCL12'
con = cx_Oracle.connect(constr)
cur = con.cursor()
データを取得した後、Pythonリストをループして、CSV形式でデータを保存できます。
for i, chunk in enumerate(chunks(cur)):
f_out.write('\n'.join([column_delimiter.join(row[0]) for row in chunk]))
f_out.write('\n')
TableHunter-For-Oracleを書いたときにこのアプローチを使用しました