nel caso tu abbia un dump fatto con sqlplus e l'uscita è confusa come qualcuno non ha definito questi 3 valori prima, c'è una via d'uscita.
Solo un paio d'ore fa l'amministratore di DB mi ha inviato quell'uscita dall'aspetto brutto della query eseguita in sqlplus (non so, forse mi odia ...). Dovevo trovare una via d'uscita: questo è uno script awk per analizzare quell'output per renderlo almeno più leggibile. Non è perfetto, ma non ho avuto abbastanza tempo per lucidarlo correttamente. Ad ogni modo, fa abbastanza bene il lavoro.
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}'
Nel caso in cui chiunque altro vorrebbe provare migliorare questo script, di seguito sono le variabili: hnames - i nomi delle colonne nell'intestazione, hdash - tratteggiata sotto l'intestazione, h - se sto attualmente parsing header (then == 1), val - the data, _d - - scambiare tra hnames e hdash, ln0 - l 'ultima riga letta, ln1 - letta riga in precedenza (è quella con cui sto effettivamente lavorando), ln2 - riga letta prima ln1
Happy parsing!
Ah, quasi dimenticavo ... Io lo uso per abbellire uscita sqlplus me stesso:
[[email protected] ~]$ cat prettify_sql
set lines 256
set trimout on
set tab off
set pagesize 100
set colsep " | "
colsep è facoltativo, ma rende aspetto uscita come SQLite che è più facile da analizzare utilizzando script.
EDIT: una piccola anteprima della produzione analizzati e non analizzato
errr .. Voglio mostrare loro come un tavolo normale. uno dopo l'altro uno – Nubkadiya