Ответ 1
Увеличьте линию, например SET LINESIZE 32000
или используйте SET WRAP OFF
(но это приведет к усечению длинных значений)
На самом деле это раздражает, когда я запускаю команду select в SQL * Plus, например:
SELECT * FROM books;
Вывод действительно плохо отформатирован и нечитабелен (ячейки строк не находятся в строке, но разделены разрывами строк и т.д.):
Как я могу настроить его, чтобы лучше показать результаты SELECT?
EDIT:
Это мое содержимое файла 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. Узнайте больше.
Например, вы можете выбрать форматирование столбца TITLE для отображения только первых двадцати символов и отображения столбца SUMMARY целиком следующим образом:
COLUMN title FORMAT a20 TRUNCATED
COLUMN summary FORMAT a4o WORD_WRAPPED
Это позволит вам лучше понять ваш запрос, не вставляя команды форматирования в его проекцию.
В качестве альтернативы используйте IDE, например Quest TOAD или собственный SQL Developer от Oracle. Эти инструменты включают браузер запросов, который автоматически отображает результаты наших запросов в более приятной сетке. (Другие аналогичные инструменты доступны).
Некоторым может не нравиться этот совет (я могу думать о нескольких администраторах баз данных, которые LOVE SqlPlus), но вы можете использовать IDE, например Toad или SQL Developer. Если вы новичок в Oracle, sqlplus заставит вас почувствовать, что вы просто отскочили назад во времени! ИМО, потратьте время на изучение Oracle, а не на SQLPlus. (ах, и читайте Руководство по концепциям, когда вы играете в своей 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;
Это должно помочь вам.
Это сработало для меня:
SELECT ISBN, SUBSTR(TITLE, 0, 16), SUBSTR(SUMMARY, 0, 16), DATE_PUBL, PAGE_COUNT FROM books;
Сделайте 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) согласно вашему требованию
Это может сделать вывод более приятным:
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/