W przypadku gdy masz zrzut wykonany z sqlplus i wyjście jest zniekształcony jak ktoś nie wcześniej ustawić te wartości 3, nie ma wyjścia.
Kilka godzin temu administrator DB wysłał mi brzydko wyglądający wynik zapytania wykonanego w sqlplus (nie wiem, może mnie nienawidzi ...). Musiałem znaleźć wyjście: jest to skrypt awk, który analizuje dane wyjściowe, aby był co najmniej bardziej czytelny. To nie jest perfekcyjne, ale nie miałem wystarczająco dużo czasu, żeby go właściwie wypolerować. W każdym razie wykonuje to całkiem dobrze.
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}'
W przypadku, ktoś chciałby spróbować poprawić ten skrypt, poniżej są zmienne: hnames - nazwy kolumn w nagłówku, hdash - przerywana poniżej nagłówka, h - czy jestem obecnie parsowania nagłówek (wtedy == 1), val - dane, _d - - aby zamienić między hnames i hdash, ln0 - ostatnia linia read, ln1 - linia poprzednio przeczytana (to ta, z którą pracuję), ln2 - wiersz przeczytany przed ln1
Happy parsing!
Aha, zapomniałbym ... Używam tego do prettify wyświetlamy SQLPLUS sobie:
[[email protected] ~]$ cat prettify_sql
set lines 256
set trimout on
set tab off
set pagesize 100
set colsep " | "
colsep jest opcjonalne, ale sprawia, że wyjście wygląda jak SQLite, który jest łatwiejszy do analizy za pomocą skryptów.
EDIT: Trochę podgląd analizowany i nie analizowany wyjściu
eeee .. Chcę im pokazać, tak jak zwykły stół. jeden po drugim – Nubkadiya