SQL * Plusで次のようなselectコマンドを実行すると、非常に不快です。
SELECT * FROM books;
出力は実際に正しくフォーマットされておらず、読み取れません(行のセルは一列ではなく、改行などで区切られています)。
SELECTの結果をより適切に表示するように構成するにはどうすればよいですか?
編集:
これが私のlogin.sqlファイルの内容です。
SET ECHO OFF
SET SERVEROUTPUT ON SIZE 1000000
SET PAGESIZE 999
SET LINESIZE 132
EDIT2:
LINESIZEを増やした後:
SET LINESIZE 32000
これは次のようになります。
ラインサイズを大きくします。例:SET LINESIZE 32000
またはSET WRAP OFF
(ただし、長い値は切り捨てられます)
SQLPlusは単純なコマンドラインツールです。これは、かなりのレポートを意図したものではありません。ただし、SQLPlusユーザーガイドに記載されているいくつかのフォーマットコマンドがあります。 詳細はこちら 。
たとえば、最初の20文字のみを表示するようにTITLE列をフォーマットし、SUMMARY列全体を次のように表示することを選択できます。
COLUMN title FORMAT a20 TRUNCATED
COLUMN summary FORMAT a4o Word_WRAPPED
これにより、プロジェクションにフォーマットコマンドを埋め込むことなく、クエリをより適切にレイアウトして表示できます。
または、IDE QuestのTOADやOracle独自のSQL Developerなど)を使用します。これらのツールには、より快適なグリッドにクエリ結果を自動的に表示するクエリブラウザが含まれます(他の同様のツールも利用できます)。
一部の人はこのアドバイスを気に入らないかもしれません(SqlPlusを愛するDBAの数人が考えられます)が、IDE like Toad または SQL Developer 。Oracleを初めて使用する場合は、sqlplusを使用すると、時間をさかのぼることができます!IMO 、SQLPlusではなくOracleの学習に時間を費やしてください。(あ、そしてIDEで遊んでいる間に コンセプトガイド を読んでください) =選択)
列の実際の内容に合うように列の幅を定義するだけです
col column_name1 format a20 -- sets column to be 20 characters wide
col column_name2 format a15 -- sets column to be 15 characters wide
set line 80
select column_name1, column_name2 from books;
これはあなたを助けるはずです。
以下のようなスクリプトを作成します
#!/bin/ksh
FILE="/tmp/queryResult.csv"
sqlplus -s /nolog << !EOF!
connect username/password
SET PAGESIZE 50000
SET LINESIZE 250
SET NUMWIDTH 5
SET FEEDBACK OFF
set echo off
set heading on
set headsep off
set wrap off
SET COLSEP ","
column Title format a22
column Summary format a15
SPOOL $FILE
Select * from books;
SPOOL OFF
EXIT
!EOF!
スクリプトをファイルに保存します。つまり、sqlscript.sqlはファイルに権限を設定します
chmode +x sqlscript.sql
スクリプトを実行し、lessコマンドにパイプする
./sqlscript.sql | less -S
「S」オプションを使用すると、出力がターミナルで設定された列より長い場合、矢印キーでスクロールできます。
または、選択したテキストエディターでFILE = "/ tmp/queryResult.csv"をダウンロードして開くこともできます。
必要に応じて、LINESIZE、NUMWIDTH、列の文字サイズ(a22)を調整します。
これは出力をよりきれいにすることができます:
SET PAGESIZE 0
SET NEWPAGE 0
SET SPACE 0
SET LINESIZE 1000
SET ECHO OFF
SET FEEDBACK OFF
SET VERIFY OFF
SET HEADING OFF
SET MARKUP HTML OFF SPOOL OFF
SET COLSEP ' '
ソース: http://larig.wordpress.com/2011/05/29/formatting-Oracle-output-in-sqlplus/
これは私のために働きました:
SELECT ISBN, SUBSTR(TITLE, 0, 16), SUBSTR(SUMMARY, 0, 16), DATE_PUBL, PAGE_COUNT FROM books;
これらすべての答えに加えて:
set colsep "&TAB"