【问题标题】:Redshift: TRUNCATE TABLE IF EXISTSRedshift:如果存在则截断表
【发布时间】:2018-12-18 02:58:23
【问题描述】:

使用TRUNCATE TABLE 代替DELETErecommended。但是,truncate table 不支持IF EXISTS 子句。另一种方法是 DROP TABLE 并重新创建但需要 DDL。如果只有表存在,有没有办法做到TRUNCATE TABLE

【问题讨论】:

  • 我对redshift一无所知,但我会看看SQL中的try catch end catch ...
  • 运行TRUNCATE是否有任何问题,即使它会产生错误?或者这会阻止脚本运行吗?另外,为什么您认为该表可能不存在?如果它不存在,你无论如何也不能用它做任何事情,所以你的脚本也会失败!

标签: sql amazon-redshift truncate drop-table


【解决方案1】:

您有两种选择来实现它:

SQL 过程/脚本
使用IF 条件,检查表是否存在,然后只截断你的表。

使用纯 SQL 语句
Create 表与if not existsTruncate 结合使用,这将确保表始终存在并且您的连续SQL 语句不会出错和停止。

CREATE TABLE @tobetruncated IF NOT EXISTS
TRUNCATE TABLE @tobetruncated

注意:这不是特定于 REDSHFIT,主要适用于所有数据库,除非它支持特殊功能(比如我知道 Oracle 有 TABLE_EXISTS_ACTION)。 Truncate 就像一个全有或全无的操作,这就是它在性能上比 DELETE 更好的原因。

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 2017-03-30
    • 1970-01-01
    • 2019-03-06
    • 2013-12-08
    相关资源
    最近更新 更多