前提・実現したいこと
CentOS上から sqlplus
コマンドを利用してSQL*Plusにログインし利用しているのですが、そのまま select * from hoge_table
または、select hoge_col1, hoge_col2 from hoge_table
のように命令を実行すると、標準出力されるものがとても見にくい状態となってしまいます。
事象としては、下記サイト様に記載されていることと同じです。
Oracle SQL*Plus SQLの表示結果を見やすくする方法 表示幅の調節「LINESIZE」「COLUMN」
上記サイトで個別にカラムの幅を設定できることはわかったのですが、ログインするたびにカラムの数だけ設定するのが面倒です。
また、login.sql にあらかじめ設定を書いておけばよいとも思いますが、カラム定義(バイト数)をひとつずつ確認して、数十テーブルの数百以上あるカラム情報をひとつずつ定義していくのが大変です。
今、下記解決策を検討しているのですが、他に良いやり方はありますでしょうか。
(妥協案の一つで、列はカンマ区切りでも構いません)
select hoge_col1||','||hoge_col2 from hoge_table
を実行する
テーブル情報(desc)から、||','||で文字列連結するスクリプトを自前で用意して利用する。
2. カラム幅自動で取得し、login.sqlを生成するスクリプトを作成する。
bash
1※イメージで、実際のコードではありません 2# テーブルリストの取得 3"select distinct table_name from all_tab_columns;" ⇒ tab_list 4for tab in `cat tab_list` 5 # カラムリストの取得 6 "select column_name from all_tab_columns where table_name = '${tab}' and data_type = 'VARCHAR2';" ⇒ col_list 7 for col in `cat col_ilst` 8 # カラムサイズの取得 9 "select round(avg(lengthb(${col}))) from ${tab};" ⇒ col_size 10 "column ${col} format a${col_size} truncate" ⇒ login.sqlに追記
そもそも、普通OracleDBのデータを扱うクライアントソフトでSQL*Plusの対話モードを普段使いするというシチュエーションはあまりないのでしょうか。
(あったら解決策(設定ファイル・スクリプト)がもっと簡単に見つけられると思うので)
よろしくお願いいたします。
補足情報(ツールのバージョンなど)
CentOS6にOracle Database 12cをインストールして使用しています。
回答3件
あなたの回答
tips
プレビュー