2010-09-13 39 views
1

我想從teradata的「幫助表」函數生成的數據集中創建一個表,這樣我可以添加一些關於該表的更多信息,並且能夠按條件過濾行。該表有400多列,所以這對管理來說非常方便。我希望能夠做一些類似於創建select的表,但它不適用於幫助表語法。缺少將數據導出爲ex​​cel,然後手動創建表模式並將表導回,沒有人知道如何將幫助表查詢的輸出轉換爲teradata中的表?如何過濾teradata幫助表

回答

3

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; 
+0

太棒了!我從來不知道這些東西。 tyvm :) – 2010-09-15 21:19:11

+1

是的。 DBC.Columns-> DBC.tables-> DBC.Databases以所需順序爲您提供列表,而不會打擾DatabaseId,TVMIDs。 – 2010-12-28 08:33:36