views:

21

answers:

1

hi all,

I'd like to create a table out of the dataset generated by teradata's "help table" function so i can add some more information about the table, and be able to filter the rows by conditions. the table has 400+ columns, so this would be very convenient for management. I'd like to be able to do something similar to creating a table as select, but it doesn't work with the help table syntax. short of exporting the data to excel, then manually creating the table schema and importing the table back in, does anyone know how to convert the output of a help table query into a table in teradata?

thank you :)

-C

+2  A: 

The output from the HELP TABLE command comes from Data Dictionary.

If I understand correctly, you want to create a new table with the following output.

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   ?

You can get all of those three columns (or even more) from the 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   ?

But first we need to find out DatabaseId and 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

Now you can list all the columns you need and store them correspondingly.

select * from dbc.tvfields
where databaseid='00000F04'xb
and tableid='0000D8070000'xb;
Wei
great! I never knew about alot of this stuff. tyvm :)
Chris Drappier
Wei's solution will get you the data back that you want and you can obviously join the DBC tables/views together. You may want to check the view DBC.Columns as it should contain both TableName and DatabaseName.
RobPaller