web-dev-qa-db-ja.com

SQL * Plusでの醜いフォーマット

SQL * Plusで次のようなselectコマンドを実行すると、非常に不快です。

SELECT * FROM books;

出力は実際に正しくフォーマットされておらず、読み取れません(行のセルは一列ではなく、改行などで区切られています)。

enter image description here

SELECTの結果をより適切に表示するように構成するにはどうすればよいですか?

編集:

これが私のlogin.sqlファイルの内容です。

SET ECHO OFF
SET SERVEROUTPUT ON SIZE 1000000
SET PAGESIZE 999
SET LINESIZE 132

EDIT2:

LINESIZEを増やした後:

SET LINESIZE 32000

これは次のようになります。

enter image description here

19
Richard Knop

ラインサイズを大きくします。例:SET LINESIZE 32000

またはSET WRAP OFF(ただし、長い値は切り捨てられます)

24

SQLPlusは単純なコマンドラインツールです。これは、かなりのレポートを意図したものではありません。ただし、SQLPlusユーザーガイドに記載されているいくつかのフォーマットコマンドがあります。 詳細はこちら

たとえば、最初の20文字のみを表示するようにTITLE列をフォーマットし、SUMMARY列全体を次のように表示することを選択できます。

COLUMN title FORMAT a20 TRUNCATED 
COLUMN summary FORMAT a4o Word_WRAPPED

これにより、プロジェクションにフォーマットコマンドを埋め込むことなく、クエリをより適切にレイアウトして表示できます。

または、IDE QuestのTOADやOracle独自のSQL Developerなど)を使用します。これらのツールには、より快適なグリッドにクエリ結果を自動的に表示するクエリブラウザが含まれます(他の同様のツールも利用できます)。

11
APC

一部の人はこのアドバイスを気に入らないかもしれません(SqlPlusを愛するDBAの数人が考えられます)が、IDE like Toad または SQL Developer 。Oracleを初めて使用する場合は、sqlplusを使用すると、時間をさかのぼることができます!IMO 、SQLPlusではなくOracleの学習に時間を費やしてください。(あ、そしてIDEで遊んでいる間に コンセプトガイド を読んでください) =選択)

7
tbone

列の実際の内容に合うように列の幅を定義するだけです

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;

これはあなたを助けるはずです。

4
Michael Ballent

以下のようなスクリプトを作成します

#!/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)を調整します。

3
user4909653

これは出力をよりきれいにすることができます:

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/

2
Bohdan

これは私のために働きました:

SELECT ISBN, SUBSTR(TITLE, 0, 16), SUBSTR(SUMMARY, 0, 16), DATE_PUBL, PAGE_COUNT FROM books;
1
Brad

これらすべての答えに加えて:

set colsep "&TAB"
0
Rijad Hadzic