【问题标题】:Teradata: replace an existing table with "CREATE TABLE"Teradata:用“CREATE TABLE”替换现有表
【发布时间】:2018-04-06 11:46:30
【问题描述】:

我应该更改什么设置以使 Teradata 将现有表替换为 CREATE TABLE 查询?
目前,如果表存在,尝试CREATE 会导致错误。所以我必须在创建表之前DROP。

谢谢

【问题讨论】:

标签: sql settings teradata


【解决方案1】:
REPLACE PROCEDURE DROP_IF_EXISTS(IN table_name VARCHAR(60),IN db_name VARCHAR(60))
BEGIN
  IF EXISTS(SELECT 1 FROM dbc.tables WHERE databasename=db_name AND tablename=table_name) 
  THEN
    CALL DBC.SysExecSQL('DROP TABLE ' || db_name ||'.'|| table_name);
  END IF;
END;

在你的 DDL 脚本中:

call drop_if_exists('$your_table_name','$your_db_name')
;
database $your_db_name;
create table $your_table_name ...
;

【讨论】:

  • 您必须添加 AND TableKind = 'T' 并更好地使用 dbc.TablesV(加上 VARCHAR(128))。但是直接删除表并忽略 表不存在 错误会更有效,请参阅stackoverflow.com/a/39771103/2527905
猜你喜欢
  • 2017-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-30
  • 1970-01-01
  • 2011-12-29
  • 1970-01-01
相关资源
最近更新 更多