0

我是新手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;
4

2 回答 2

2

对于大多数系统视图有几个版本,以“X”结尾的类似于Oracle的“user_ ”视图,没有“X”是“all_ ”,例如:

dbc.Tables:旧版本,TD12 后弃用 dbc.TablesX:旧版本,TD12 后弃用 dbc.TablesV:推荐版本,所有数据库中的所有对象 dbc.TablesVX:推荐版本,提交用户有任何访问权限的对象

不同的约束类型存储在 Teradata 的不同位置。

外键:dbc.All_ri_childrenV

表级检查:dbc.Table_LevelConstraintsV

列级检查:dbc.ColumnsV.ColumnConstraint

NULL:dbc.ColumnsV.Nullable

主键:dbc.IndicesV.IndexType = 'K'

唯一:dbc.IndicesV.IndexType = 'U'

但是,您可能会注意到,并非所有主/外键和唯一约束都在您的环境中实施,以避免额外的开销,因为这已经由加载过程维护(对于 Teradata 或任何其他数据仓库都是相同的)。

于 2013-09-11T09:23:35.973 回答
1

在 teradata 中,大多数元数据信息都保存在 dbc..

oracle 中的对象可能映射到 dbc.tables。

从 dbc.tables 中选择 *。

最后一个:

  SELECT tablename, 
         columnname,
         columntype,
         columnformat,
         columnlength,
         Nullable,
         columnid,defaultvalue
    FROM dbc.columns

我正在寻找满足 user_constraints 的要求,一旦我找到东西就会更新。

希望以上内容对您有所帮助。

于 2013-09-09T22:35:34.480 回答