Как сделать вывод sqlplus в одной строке?

У меня есть таблица со 100 столбцами. При выборе данных в SQL Plus вывод завершается, что затрудняет чтение.

Мне бы хотелось, чтобы либо появилась горизонтальная полоса прокрутки, либо каким-то образом отправляла вывод на less

Я запускаю следующие инструкции в SQLPlus -

SET LINESIZE 32000;
SET PAGESIZE 40000;
SET LONG 50000;
SPOOL output.txt
SELECT * FROM big_table;

Затем в bash я запустил -

  

less output.txt

Выход по-прежнему отображается и нечитаем.

33 голоса | спросил Kshitiz Sharma 29 52013vEurope/Moscow11bEurope/MoscowFri, 29 Nov 2013 07:50:44 +0400 2013, 07:50:44

3 ответа


47

Недостаточно заставить sqlplus не обматывать строки. Также необходимо рассказать зрителю, что вы используете для просмотра файла спула, а не для обертывания строк. Если ваш зритель less, а затем -S вариант, который вы должны использовать в соответствии с https://superuser.com/questions/272818/how-to- turn-off-word-wrap-in-less . В Unix /Linux вы можете использовать head -1 output.txt, чтобы получить первую строку файла, и поэтому убедитесь, что это так, как ожидалось, или вы можете использовать od -c output.txt|head чтобы увидеть, где разрывы строк фактически помещены в ваш выходной файл.

Если вы показываете столбцы LONG, а их значения содержат разрывы строк, тогда для этих значений столбцов будет напечатано несколько строк, и вы не сможете отменить это с помощью настроек sqlplus.


Следующие команды sqlplus могут быть полезны:

  • SET LINESIZE linesize длина строки. В большинстве случаев максимальное значение для linesize равно 32767. Вы можете узнать свое максимальное значение, если вы установите LINESIZE на недопустимое значение и проверьте сообщение об ошибке поэтому SET LINESIZE 0 может дать SP2-0267: linesize option 0 out of range (1 through 32767) (1)
  • SET TRIMSPOOL ON, в противном случае каждая строка в файле spool заполняется пробелами до тех пор, пока не будет достигнута линия.
  • SET TRIMOUT ON, в противном случае каждая строка на выходе заполняется пробелами до тех пор, пока не будет достигнута линия.
  • SET WRAP OFF Усекает линию, если она больше, чем LINESIZE. Этого не должно быть, если линия линий достаточно велика.
  • SET TERMOUT OFF подавляет печать результатов на выходе. Строки все еще записываются в файл спула. Это может ускорить время выдержки из отчета.
  • SET PAGESIZE 0, чтобы установить бесконечный размер страницы и избежать заголовков, заголовков и т. д.
  • Существуют и другие параметры SET, относящиеся к выводу (NUMWIDTH, NUMFORMAT, LONG, COLSEP) и производительности (ARRAYSIZE, LONGCHUNKSIZE).

Для форматирования отдельных столбцов вам необходимо использовать команду COLUMN.

например. column name format a30 будет форматировать колонку name в выводе до максимальной длины 30 символов.

Если вы хотите, чтобы размер дисплея не был исправлен, но он должен быть равен размеру фактического значения столбцов в строке, то единственный способ, который я знаю, это то, что вы меняете предложение select вашего оператора, чтобы получить желаемый результата и использовать оператор конкатенации строк ||, например

select emp_id||' '||first_name||' '||last_name
from emp;

Полное описание всей переменной можно найти в Руководство пользователя и справочник по SQL * Plus .

Если вы хотите повторно использовать некоторые настройки (или определения COLUMN), вы можете сохранить их в файле и запустить этот файл, когда они вам понадобятся. Вы даже можете запустить этот файл автоматически, если вы запустите sqlplus.

(1) «Как найти максимальное значение LINESIZE (зависит от системы) (Doc ID 1547262.1)«

ответил miracle173 7 Mayam14 2014, 09:45:18
3

Вам нужно установить следующее:

SET WRAP OFF
ответил Balazs Papp 29 52013vEurope/Moscow11bEurope/MoscowFri, 29 Nov 2013 10:32:35 +0400 2013, 10:32:35
1

вы можете установить это как

SET WRAP OFF

SET PAGESIZE 0
ответил DevYudh 5 ThuEurope/Moscow2013-12-05T07:05:35+04:00Europe/Moscow12bEurope/MoscowThu, 05 Dec 2013 07:05:35 +0400 2013, 07:05:35

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132