Гадкое форматирование в SQL * Plus - PullRequest
16 голосов
/ 24 апреля 2011

Действительно раздражает, что когда я запускаю команду выбора в SQL * Plus, такую ​​как:

SELECT * FROM books;

Выходные данные действительно плохо отформатированы и не читаются (ячейки строки не в строке, а разделены строкойперерывы и т. д.):

enter image description here

Как настроить его так, чтобы он отображал результаты SELECT более приятным образом?

РЕДАКТИРОВАТЬ:

Это мойСодержимое файла login.sql:

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

РЕДАКТИРОВАТЬ2:

После увеличения ЛИНЕЙЗА:

SET LINESIZE 32000

Теперь это выглядит так:

enter image description here

Ответы [ 8 ]

22 голосов
/ 24 апреля 2011

Увеличьте размер строки, например, SET LINESIZE 32000

или используйте SET WRAP OFF (но это урезает длинные значения)

11 голосов
/ 24 апреля 2011

SQL Plus - простой инструмент командной строки. Это на самом деле не предназначено для красивых отчетов. Однако у него есть некоторые команды форматирования, которые описаны в Руководстве пользователя SQL Plus. Узнать больше .

Например, вы можете отформатировать столбец TITLE так, чтобы отображались только первые двадцать символов, и отображать столбец SUMMARY полностью таким образом:

COLUMN title FORMAT a20 TRUNCATED 
COLUMN summary FORMAT a4o WORD_WRAPPED

Это позволит вам видеть ваш запрос более аккуратно, без встраивания команд форматирования в его проекцию.

В качестве альтернативы, используйте IDE, такую ​​как Quest's TOAD или Oracle SQL Developer. Эти инструменты включают браузер запросов, который автоматически отображает результаты наших запросов в более удобной сетке. (Доступны другие аналогичные инструменты).

7 голосов
/ 25 апреля 2011

Некоторым может не понравиться этот совет (я могу подумать о нескольких администраторах баз данных, которые ЛЮБЯТ SqlPlus), но вы можете использовать IDE, например Toad или SQL Developer . Если вы новичок в Oracle, sqlplus заставит вас почувствовать, что вы просто отскочили назад во времени! ИМО, потрать время на изучение Oracle, а не SQLPlus (о, и прочитайте руководство Concepts , играя в выбранной вами IDE)

4 голосов
/ 24 апреля 2011

Просто определите ширину столбцов, чтобы они соответствовали фактическому содержанию столбцов

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;

Это должно помочь вам.

3 голосов
/ 17 мая 2015

Создайте сценарий, как показано ниже

#!/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) в соответствии с вашим требованием

2 голосов
/ 22 ноября 2013

Это может сделать вывод более красивым:

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/

1 голос
/ 24 апреля 2011

Это сработало для меня:

SELECT ISBN, SUBSTR(TITLE, 0, 16), SUBSTR(SUMMARY, 0, 16), DATE_PUBL, PAGE_COUNT FROM books;
0 голосов
/ 04 января 2019

Дополнительно ко всем этим ответам:

set colsep "&TAB"
...