Si vous avez une décharge faite avec sqlplus et la sortie est brouillées comme quelqu'un n'a pas défini ces 3 valeurs avant, il y a un moyen de sortir.
Il ya quelques heures, l'administrateur de DB m'envoie cette sortie laide de requête exécutée dans sqlplus (je ne sais pas, peut-être qu'il me déteste ...). J'ai dû trouver un moyen de sortir: c'est un script awk pour analyser cette sortie pour la rendre au moins plus lisible. Ce n'est pas parfait, mais je n'ai pas eu le temps de le peaufiner correctement. En tout cas, ça fait très bien le boulot.
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}'
Au cas où quelqu'un d'autre voudrait essayer d'améliorer ce script, ci-dessous sont les variables: hnames - les noms de colonnes dans l'en-tête, hdash - en pointillés ci-dessous l'en-tête, h - si je suis actuellement l'analyse syntaxique header (then == 1), val - les données, _d - - pour permuter entre hnames et hdash, ln0 - dernière ligne lue, ln1 - ligne lue précédemment (c'est celle avec laquelle je travaille), ln2 - ligne lue avant ln1
Bonne analyse!
Oh, presque oublié ... J'utilise ceci pour enjoliver sortie sqlplus moi-même:
[[email protected] ~]$ cat prettify_sql
set lines 256
set trimout on
set tab off
set pagesize 100
set colsep " | "
colsep est facultative, mais elle donne un aspect de sortie comme sqlite qui est plus facile à analyser à l'aide de scripts.
EDIT: Un petit aperçu de la production et non analysable analysable

errr .. Je veux leur montrer comme une table normale. l'un après l'autre – Nubkadiya