Help us understand the problem. What is going on with this article?

SELECT文の検索結果をCSVへ出力するSQL(Oracle)

More than 1 year has passed since last update.

はじめに

システムに不具合が発生し、データに問題があることまで調査できたとします。
そのとき、手っ取り早くDBの中身をCSVで出力して確認したいとき、ありませんか?
私はありました。

OracleにはSQLの実行結果をファイルに出力する SPOOL コマンドが用意されているので、それを応用してCSVへ出力するSQLを実装しました。
調査の際などにご活用ください。

環境

  • DB:Oracle Database 10g Release 10.2.0.5.0 - 64bit Production

CSV出力SQL

output_csv.sql
-- 検索結果をCSVへ出力する

-- ①SQL設定
-- コンソールメッセージを非表示にする
SET ECHO OFF
-- 1行に出力するバイト数
-- 少ないと見切れるので最大に設定する
SET LINESIZE 32767
-- 1ページの行数
-- 少ないとヘッダーが多くて見づらいので無制限に設定する
SET PAGESIZE 0
-- 「○○行が選択されました」メッセージを非表示にする
SET FEEDBACK OFF
-- 区切り文字をカンマに指定する
SET COLSEP ','
-- 各行の右端にあるスペースを削除する
SET TRIMSPOOL ON

-- ②出力開始
-- 出力パスは適宜変更する
SPOOL C:\output.csv

-- ③出力内容
-- 検索文は適宜変更する
SELECT *
  FROM {テーブル名}
;

-- ④出力終了
SPOOL OFF

追記

コメントを頂いて気づいたのですが、この方法だと固定長となり、各列の右にスペースが含まれてしまいます。

CSV出力したデータを目視以外で使うなど、可変長で取得したい場合は、列をカンマで結合して1つの列として検索するしかなさそうです。

SELECT {列1} || ',' ||
       {列2} || ',' ||
       {列3}
  FROM {テーブル名}
;

参考リンク

uhooi
iOSアプリ開発とSwiftが好きです✨ 趣味:テニス、アナログゲーム
https://theuhooi.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした