题
我想从Teradata的“帮助表”功能生成的数据集中创建一个表,以便我可以添加有关表格的更多信息,并能够按条件过滤行。该表有400列以上的列,因此对于管理非常方便。我希望能够做类似于创建表作为选择的表格的事情,但它不适用于帮助表语法。缺乏将数据导出到Excel,然后手动创建表格架构并将表重新导入,有人知道如何将帮助表查询的输出查询转换为Teradata中的表格吗?
解决方案
帮助表命令的输出来自数据字典。
如果我正确理解,您要创建一个具有以下输出的新表。
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 ?
但是首先,我们需要找出数据库和表格。
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;
不隶属于 StackOverflow