SQL*PLUSでCSV出力をする、一行に表示する情報を多くする
LINUXサーバから、SQL*PLUSを使ってDBに接続してデータを取りたいこともある
GUIに頼らず、コマンドラインでデータを取ってきたいこともある
バージョンによるのかもしれんが、select句にカラム一個一個書いてカンマ区切りで文字列結合する記事が多かった
テストのエビデンスとかじゃ、チョットそれはやってられないので、SPOOLとかで一気に出力したときのメモ
CSV出力
参考
SQL*Plusからのレポートの生成
SQL*Plusコマンド一覧
SQLPLUS -MARKUP CSV ONまたはSET MARKUP CSV ONを使用して、レポートをCSV形式で生成できます。
SET MARKUP CSV ON
HTMLでの出力もできるらしーー
SET TERMOUT OFF ALTER SESSION SET NLS_DATE_FORMAT = 'YYYYMMDDHH24MISS'; -- /home/hoge/フォルダ + 上記の形式日付ファイル名に出力される SPOOL /home/hoge/&_DATE..csv PROMPT [実行したいSQLのタイトルでもなんでもーー] [実行したいSQL] SPOOL OFF EXIT
チューニング
参考
SQL*Plusのチューニング
SQL*Plusの制限
普通にコマンドラインからSQL*PLUS使ってDB接続したときも、固定長出力で更に制限があって見れたもんじゃない・・
大体は、linesizeやpagesizeを調整するのは基本になりそう
SET LINESIZE 32767 SET PAGESIZE 1000
とのことなので、無暗に大きくするのはよくない
上記では、linesizeは一旦最大値を設定
SET MARKUP CSVが有効な場合、次のSETコマンドは出力において有効となりません。
LINESIZEもPAGESIZEも無視されるので、CSV出力するときはいらないーーちなみにね