Подтвердить что ты не робот

Как отображать данные таблицы более четко. в oracle sqlplus

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

alt text http://img683.imageshack.us/img683/5512/tabless.png

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

Name   |    Address    |
-------+---------------+
name1  |    address1   |
name2  |    address2   |
name3  |    address3   |
4b9b3361

Ответ 1

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

set lines 256
set trimout on
set tab off

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

Ответ 2

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

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 перед запуском запроса. Или вы можете поместить эти команды и запрос в файл script, например. myscript.sql и запустите это. Например:

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

select name, address, telephone
from mytable;

Ответ 3

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

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

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}'

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

Счастливый разбор!

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

[[email protected] ~]$ cat prettify_sql 
set lines 256
set trimout on
set tab off
set pagesize 100
set colsep " | "

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

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

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