我想从teradata的“帮助表”功能生成的数据集中创建一个表,这样我就可以添加关于表的更多信息,并能够按条件过滤行。该表有400多列,因此管理非常方便。我希望能够做类似于创建表的选项,但它不能与帮助表语法一起使用。如果没有将数据导出到excel,然后手动创建表模式并重新导入表,是否有人知道如何将帮助表查询的输出转换为teradata中的表?
答案 0 :(得分:5)
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;