Comment filtrer teradata table aide
-
02-10-2019 - |
Question
Je voudrais créer un tableau de l'ensemble de données généré par la fonction « table d'aide » de Teradata pour que je puisse ajouter un peu plus d'informations sur la table, et être capable de filtrer les lignes par des conditions. la table a des colonnes 400+, donc ce serait très pratique pour la gestion. Je voudrais pouvoir faire quelque chose de similaire à la création d'une table de sélection, mais il ne fonctionne pas avec la syntaxe de la table d'aide. à court d'exporter les données vers Excel, puis créer manuellement le schéma de la table et l'importation à l'arrière de table, personne ne sait comment convertir la sortie d'une requête de table d'aide dans une table teradata?
La solution
La sortie de la commande TABLE HELP provient de dictionnaire de données.
Si je comprends bien, vous voulez créer une nouvelle table avec la sortie suivante.
help table t1; *** Help information returned. 4 rows. *** Total elapsed time was 1 second. Column Name Type Comment ------------------------------ ---- -------- a1 I ? b1 CF ? c1 D ? d1 DA ?
Vous pouvez obtenir tous ces trois colonnes (ou même plus) de la table DBC.TVFields.
help table dbc.tvfields; help table dbc.tvfields; *** Help information returned. 37 rows. *** Total elapsed time was 1 second. Column Name Type Comment ------------------------------ ---- ---------------- TableId BF ? FieldName CV ? FieldId I2 ? Nullable CF ? FieldType CF ? MaxLength I ? DefaultValue CV ? DefaultValueI BV ? TotalDigits I2 ? ImpliedPoint I2 ? FieldFormat CV ? FieldTitle CV ? CommentString CV ? CollationFlag CF ? UpperCaseFlag CF ? DatabaseId BF ? Compressible CF ? CompressValueList CV ? FieldStatistics BV ? ColumnCheck CV ? CheckCount I2 ? CreateUID BF ? CreateTimeStamp TS ? LastAlterUID BF ? LastAlterTimeStamp TS ? LastAccessTimeStamp TS ? AccessCount I ? SPParameterType CF ? CharType I2 ? LobSequenceNo I2 ? IdColType CF ? UDTypeId BF ? UDTName CV ? TimeDimension CF ? VTCheckType CF ? TTCheckType CF ? ConstraintId BF ?
Mais d'abord nous devons savoir DatabaseID et tableid.
select databaseid from dbc.dbase where databasename='db1'; *** Query completed. One row found. One column returned. *** Total elapsed time was 1 second. DatabaseId ---------- 00000F04
select TVMId from dbc.tables2 where databaseid='00000F04'xb and TVMName='t1'; *** Query completed. One row found. One column returned. *** Total elapsed time was 1 second. TVMId ------------ 0000D8070000
Maintenant, vous pouvez lister toutes les colonnes dont vous avez besoin et de les stocker en conséquence.
select * from dbc.tvfields where databaseid='00000F04'xb and tableid='0000D8070000'xb;