Как отфильтровать справочную таблицу teradata - PullRequest
1 голос
/ 14 сентября 2010

Я хотел бы создать таблицу из набора данных, сгенерированного функцией «справочной таблицы» teradata, чтобы я мог добавить больше информации о таблице и иметь возможность фильтровать строки по условиям. таблица имеет более 400 столбцов, так что это было бы очень удобно для управления. Я хотел бы иметь возможность сделать что-то похожее на создание таблицы в качестве выбора, но это не работает с синтаксисом справочной таблицы. Если не считать экспорта данных в Excel, а затем вручную создать схему таблицы и импортировать таблицу обратно, кто-нибудь знает, как преобразовать вывод запроса таблицы справки в таблицу в teradata?

1 Ответ

5 голосов
/ 16 сентября 2010

Вывод команды HELP TABLE происходит из словаря данных.

Если я правильно понимаю, вы хотите создать новую таблицу со следующим выводом.

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   ?

Вы можете получить все эти три столбца (или даже больше) из таблицы 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   ?

Но сначала нам нужно выяснить DatabaseId и 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

Теперь вы можете перечислить все нужные вам столбцы и сохранить их соответствующим образом.

select * from dbc.tvfields
where databaseid='00000F04'xb
and tableid='0000D8070000'xb;
...