Уродливое форматирование в SQL * Plus

На самом деле это раздражает, когда я запускаю команду select в SQL * Plus, например:

SELECT * FROM books;

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

enter image description here

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

EDIT:

Это мое содержимое файла 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

Ответ 1

Увеличьте линию, например SET LINESIZE 32000

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

Ответ 2

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

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

COLUMN title FORMAT a20 TRUNCATED 
COLUMN summary FORMAT a4o WORD_WRAPPED

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

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

Ответ 3

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

Ответ 4

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

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;

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

Ответ 5

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

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

Ответ 6

Сделайте script, как показано ниже

#!/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!

Сохранить script в файле, а именно sqlscript.sql установить разрешение на файл

chmode +x sqlscript.sql

запустите команду script и pipe для команды

./sqlscript.sql | less -S
Опция

"S" позволит вам прокручивать клавиши со стрелками, если вывод больше, чем столбцы, установленные в терминале.

В качестве альтернативы вы можете загрузить и открыть FILE = "/tmp/queryResult.csv" в текстовом редакторе по вашему выбору.

Отрегулируйте LINESIZE, NUMWIDTH, размер символа столбца (a22) согласно вашему требованию