2010-09-13 14 views
1

Je voudrais créer une table à partir de l'ensemble de données généré par la fonction "table d'aide" de teradata afin que je puisse ajouter plus d'informations sur la table, et pouvoir filtrer les lignes par conditions. la table a plus de 400 colonnes, donc ce serait très pratique pour la gestion. J'aimerais pouvoir faire quelque chose de similaire à la création d'une table en sélection, mais cela ne fonctionne pas avec la syntaxe de la table d'aide. à court d'exporter les données pour exceller, puis de créer manuellement le schéma de la table et d'y réimporter la table, est-ce que quelqu'un sait comment convertir la sortie d'une requête de table d'aide en une table en teradata?Comment filtrer la table d'aide de teradata

Répondre

3

La sortie de la commande HELP TABLE provient du 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 toutes ces trois colonnes (ou même plus) à partir 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 trouver 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; 
+0

super! Je ne savais jamais beaucoup de choses. tyvm :) –

+1

Oui. DBC.Columns-> DBC.tables-> DBC.Databases vous donne la liste dans l'ordre requis sans se soucier de DatabaseId, TVMIDs. –