Как более наглядно отобразить данные таблицы в oracle sqlplus - PullRequest
25 голосов
/ 09 июня 2010

Я хочу иметь возможность отображать результирующие данные из выбора, не все столбцы под другими.

Вот как sqlplus отображает данные моей таблицы:

enter image description here

Но я хочу показать их как:

Name   |    Address    |    Phone    |
-------+---------------+-------------+
name1  |    address1   |    phone1   |
name2  |    address2   |    phone2   |
name3  |    address3   |    phone3   |

Не каждый столбец под другим

Ответы [ 4 ]

53 голосов
/ 09 июня 2010

Я обычно начинаю с чего-то вроде:

set lines 256
set trimout on
set tab off

Посмотрите help set, если у вас установлена ​​справочная информация. И затем select name,address вместо select *, если вы действительно хотите только эти два столбца.

42 голосов
/ 09 июня 2010

Если вы имеете в виду, что хотите видеть их так:

WORKPLACEID NAME       ADDRESS        TELEPHONE
----------- ---------- -------------- ---------
          1 HSBC       Nugegoda Road      43434
          2 HNB Bank   Colombo Road      223423

, тогда в SQL Plus вы можете установить ширину столбцов следующим образом (например):

column name format a10
column address format a20
column telephone format 999999999

Вы также можете указать размер строки и размер страницы, если необходимо, например:

set linesize 100 pagesize 50

Вы делаете это, вводя эти команды в SQL Plus перед выполнением запроса. Или вы можете поместить эти команды и запрос в файл сценария, например myscript.sql и запустите это. Например:

column name format a10
column address format a20
column telephone format 999999999

select name, address, telephone
from mytable;
2 голосов
/ 13 июля 2018

Вы можете установить размер строки в соответствии с шириной окна и установить перенос, используя следующую команду.

set linesize 160;
set wrap off;

Я использовал 160 согласно моим предпочтениям, вы можете установить его где-то между 100 - 200, и установка переноса не будет вашими данными и будет отображать данные должным образом.

1 голос
/ 11 августа 2017

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

Всего пару часов назад администратор БД отправил мне этот ужасно выглядящий вывод запроса, выполненного в sqlplus (я не знаю, может, он меня ненавидит ...). Я должен был найти выход: это скрипт awk для анализа этого вывода, чтобы сделать его как минимум более читабельным. Это далеко не идеально, но у меня не было достаточно времени, чтобы отполировать его должным образом. Во всяком случае, это делает работу довольно хорошо.

awk ' function isDashed(ln){return ln ~ /^---+/};function addLn(){ln2=ln1; ln1=ln0;ln0=$0};function isLoaded(){return l==1||ln2!=""}; function printHeader(){hdr=hnames"\n"hdash;if(hdr!=lastHeader){lastHeader=hdr;print hdr};hnames="";hdash=""};function isHeaderFirstLn(){return isDashed(ln0) && !isDashed(ln1) && !isDashed(ln2) }; function isDataFirstLn(){return isDashed(ln2)&&!isDashed(ln1)&&!isDashed(ln0)}                         BEGIN{_d=1;h=1;hnames="";hdash="";val="";ln2="";ln1="";ln0="";fheadln=""}                                 { addLn();  if(!isLoaded()){next}; l=1;             if(h==1){if(!isDataFirstLn()){if(_d==0){hnames=hnames" "ln1;_d=1;}else{hdash=hdash" "ln1;_d=0}}else{_d=0;h=0;val=ln1;printHeader()}}else{if(!isHeaderFirstLn()){val=val" "ln1}else{print val;val="";_d=1;h=1;hnames=ln1}}   }END{if(val!="")print val}'

Если кто-то еще захочет попробовать улучшить этот скрипт, ниже приведены переменные: hnames - имена столбцов в заголовке, hdash - разбито под заголовком, h - разбираю ли я в данный момент заголовок (тогда == 1), val - данные, _d - - переключаться между hnames и hdash, ln0 - чтение последней строки, ln1 - чтение строки ранее (это та, с которой я на самом деле работаю), ln2 - чтение строки перед ln1

Удачного разбора!

О, почти забыл ... Я использую это для саморегуляции вывода sqlplus:

[oracle@ora ~]$ cat prettify_sql 
set lines 256
set trimout on
set tab off
set pagesize 100
set colsep " | "

colsep не обязателен, но он делает вывод похожим на sqlite, который легче анализировать с помощью скриптов.

EDIT: Небольшой предварительный просмотр разобранного и непарсированного вывода

A little preview of parsed and non-parsed output

...