我是Teradata
的新手。我一直在使用Oracle。但是,当我尝试在Teradata
中运行以下查询时,它们根本无效。如何将以下查询翻译为Teradata
:
select Table_name, constraint_name, constraint_type,
r_constraint_name, Delete_rule, search_condition
from user_constraints
order by table_name, constraint_name;
select object_name, object_id, Object_type,
Created, last_DDL_time, status
from user_Objects
order by object_name;
select table_name, column_name, data_type, data_length,
data_precision, nullable, column_id, data_default
from user_tab_columns
order by table_name, column_name;
答案 0 :(得分:2)
对于大多数系统视图,有几个版本,以“X”结尾的那些类似于Oracle的“user_ ”视图,没有“X”它是“all _ ”,例如:
dbc.Tables:旧版本,自TD12以来已弃用 dbc.TablesX:旧版本,自TD12以来已弃用 dbc.TablesV:推荐版本,所有数据库中的所有对象 dbc.TablesVX:推荐版本,提交用户具有任何访问权限的对象
不同的约束类型存储在Teradata的不同位置。
外键:dbc.All_ri_childrenV
表级CHECK:dbc.Table_LevelConstraintsV
列级别CHECK:dbc.ColumnsV.ColumnConstraint
NULL:dbc.ColumnsV.Nullable
主键:dbc.IndicesV.IndexType ='K'
唯一:dbc.IndicesV.IndexType ='U'
但是,您可能会注意到并非所有主/外键和唯一约束都在您的环境中实现,以避免额外的开销,因为这已经由加载过程维护(这对于Teradata来说是相同的)或任何其他数据仓库)。
答案 1 :(得分:1)
在teradata中,大多数元数据信息都保存在dbc ..
中 oracle中的对象可能映射到dbc.tables。
从dbc.tables中选择*。
为最后一个:
SELECT tablename,
columnname,
columntype,
columnformat,
columnlength,
Nullable,
columnid,defaultvalue
FROM dbc.columns
我希望实现user_constraints,一旦找到某些内容就会更新。
希望以上内容有所帮助。