記事カテゴリ

ユーザー機能


 2024年4月27日(土) 22:18 JST

[Oracle] SQL*Plus で csv にデータをおとす方法

  • 投稿者:
  • 表示回数
    21,122

Oracle には データを CSV に出力する方法がないので、SQL*Plus を使って出力するか、もしくはサードパーティ製のツールを使う以外ないようです。
(Oracle Database 10g Express Edition には標準で csv のエクスポート/インポート機能があります。)

Google で検索するとすぐにでてくるのですが...

以下のような SQL ファイルを作成して実行します。
(SQL 文を書かないといけないのがかなりめんどくさい)

SET ECHO OFF
SET FEEDBACK OFF 
SET HEADING OFF
SET LINESIZE 10000
SET PAGESIZE 0
SET TRIMSPOOL ON
SET TERMOUT OFF

SPOOL output.csv

SELECT 
'"'||col1||'",' 
||'"'||col2||'",' 
||'"'||col3||'",' 
||'"'||col4||'",' 
||'"'||TO_CHAR(date1, 'YYYYMMDD')||'"' 
FROM 
table 
; 

SPOOL OFF 
EXIT

できたら、SQL ファイルを実行します。
実行方法は

SQL> @hogehoge.sql

です。

上記の「set」コマンドを説明します。
linesize: 1 行の長さを指定します。少し大きめの数字を取っておきましょう。
pagesize: 数レコードずつの間のセパレータを無効にする。
trimspool: SPOOLファイルの行末のスペースをトリムする。
termout: 結果を画面に表示しない。(ただし対話形式では無効)

どう考えても外部ツールを使う方が楽です♪
黒猫SQL Studio 等を使うと楽にCSVに落とせます。しかも、フリーですしね。

トラックバック

このエントリのトラックバックURL:
https://www.blackcat.xyz/trackback.php/ProgramingFAQ_ora0002

以下のコメントは、その投稿者が所有するものでサイト管理者はコメントに関する責任を負いません。