Archives de Tag: tests

Analyser mes données depuis une simple requete!

En discutant avec les équipes de testeurs, nous avons remarqué que la connaissance des tables systeme d’Oracle pouvait amener des informations fort utiles. La requete qui suit se propose de répondre efficacement à cette problématique. Néanmoins, le prérequis est le calcul des statistiques Oracle à l’issue de l’alimentation. L’étude des statistiques permet ainsi d’obtenir le nombre de lignes dans la table, et pour chaque colonne le type de données, le fait que les null sont autorisés, le nombre de nulls, le nombre de valeurs distinctes, ains que les valeurs mini et maxi contenues. La seule modification à faire à la requete est sur le nom du propriétaire des tables.

Voici la requete:

select tb.owner,tb.table_name,tb.last_analyzed,tb.num_rows,
TC.COLUMN_NAME,TC.DATA_TYPE, nullable,num_nulls,num_distinct,
decode(data_type
,’NUMBER’ ,to_char(utl_raw.cast_to_number(low_value))
,’VARCHAR2′ ,to_char(utl_raw.cast_to_varchar2(low_value))
,’NVARCHAR2′ ,to_char(utl_raw.cast_to_nvarchar2(low_value))
,’BINARY_DOUBLE’,to_char(utl_raw.cast_to_binary_double(low_value))
,’BINARY_FLOAT’ ,to_char(utl_raw.cast_to_binary_float(low_value))
,’DATE’,to_char(1780+to_number(substr(low_value,1,2),’XX’)
+to_number(substr(low_value,3,2),’XX’))||’-‘
||to_number(substr(low_value,5,2),’XX’)||’-‘
||to_number(substr(low_value,7,2),’XX’)||’ ‘
||(to_number(substr(low_value,9,2),’XX’)-1)||’:’
||(to_number(substr(low_value,11,2),’XX’)-1)||’:’
||(to_number(substr(low_value,13,2),’XX’)-1)
, low_value
) low_value,
decode(data_type
,’NUMBER’ ,to_char(utl_raw.cast_to_number(high_value))
,’VARCHAR2′ ,to_char(utl_raw.cast_to_varchar2(high_value))
,’NVARCHAR2′ ,to_char(utl_raw.cast_to_nvarchar2(high_value))
,’BINARY_DOUBLE’,to_char(utl_raw.cast_to_binary_double(high_value))
,’BINARY_FLOAT’ ,to_char(utl_raw.cast_to_binary_float(high_value))
,’DATE’,to_char(1780+to_number(substr(high_value,1,2),’XX’)
+to_number(substr(high_value,3,2),’XX’))||’-‘
||to_number(substr(high_value,5,2),’XX’)||’-‘
||to_number(substr(high_value,7,2),’XX’)||’ ‘
||(to_number(substr(high_value,9,2),’XX’)-1)||’:’
||(to_number(substr(high_value,11,2),’XX’)-1)||’:’
||(to_number(substr(high_value,13,2),’XX’)-1)
, high_value
) high_value

from all_tab_columns tc,
(select owner,table_name,last_analyzed,num_rows
from all_tables
where last_analyzed is not null
and owner like ‘%_IRI_%’
order by last_analyzed) tb
where TC.TABLE_NAME = TB.TABLE_NAME

Publicités

1 commentaire

Classé dans DATA, RESTITUTION