0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

SQLPLUSで実行して、CSV形式が欲しい。。そんなときがありました。

検索してみると、以下の方がご紹介してくれていて、「SET MARKUP CSV ON」便利!と思ったのですが。
11gだったので、使えない。

なので、ちょっとした小細工をしたので、残します。

悩みポイント

SQLPLUSのオプションで色々やれると思うのですが、やりきれない部分になります。

1.空白が入ってしまう(VARCHAR2(50)にも関わらず、long_name11の後に空白がある。)
2.ヘッダが省略されてしまう(created_at なのに、CREATED_A)
3.データとヘッダーの間に「----」が入ってしまう。

SQL> select long_name_1, long_name_2, created_at from qiita_test_table;

LONG_NAME_1                                        LONG_NAME_2                                        CREATED_A
-------------------------------------------------- -------------------------------------------------- ---------
long_name11                                        long_name12                                        09-JUL-25
long_name21                                        long_name22                                        09-JUL-25
long_name31                                        long_name32                                        09-JUL-25

小細工

※ SELECTするカラムがたくさんある場合は、エラーになると思われます。

こんな感じで、「set heading off」でSQLPLUSのヘッダーをOFFにする。
SQLとしては、ヘッダー行とデータ行をUNION ALL でつなぐ。

SQL> set heading off
SQL> select 'long_name_1,long_name_2,created_at' from dual
union all
select long_name_1 || ',' || long_name_2  || ',' || created_at from qiita_test_table;  2    3  

long_name_1,long_name_2,created_at
long_name11,long_name12,09-JUL-25
long_name21,long_name22,09-JUL-25
long_name31,long_name32,09-JUL-25
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?