红移:如果存在则截断 TABLE
Redshift: TRUNCATE TABLE IF EXISTS
用TRUNCATE TABLE
代替DELETE
是recommended。但是,truncate table 不支持 IF EXISTS
子句。另一种方法是 DROP TABLE
并重新创建但需要 DDL。如果只有 table 存在,有没有办法做到 TRUNCATE TABLE
?
您有两种选择来实现它:
SQL Procedure/Script
使用IF
条件,检查table是否存在,然后只截断你的table。
带有普通 SQL 语句
将 Create
table 与 if not exists
结合使用 Truncate
,这将确保 table 始终存在并且您的连续 SQL 语句不要出错并停止。
CREATE TABLE @tobetruncated IF NOT EXISTS
TRUNCATE TABLE @tobetruncated
NOTE: This is not specific to REDSHFIT, mostly applies to all DB unless it supports special functions (like one I know Oracle has TABLE_EXISTS_ACTION
). Truncate is like a all or nothing operation, and thats what makes it much better in performance than DELETE.
用TRUNCATE TABLE
代替DELETE
是recommended。但是,truncate table 不支持 IF EXISTS
子句。另一种方法是 DROP TABLE
并重新创建但需要 DDL。如果只有 table 存在,有没有办法做到 TRUNCATE TABLE
?
您有两种选择来实现它:
SQL Procedure/Script
使用IF
条件,检查table是否存在,然后只截断你的table。
带有普通 SQL 语句
将 Create
table 与 if not exists
结合使用 Truncate
,这将确保 table 始终存在并且您的连续 SQL 语句不要出错并停止。
CREATE TABLE @tobetruncated IF NOT EXISTS
TRUNCATE TABLE @tobetruncated
NOTE: This is not specific to REDSHFIT, mostly applies to all DB unless it supports special functions (like one I know Oracle has
TABLE_EXISTS_ACTION
). Truncate is like a all or nothing operation, and thats what makes it much better in performance than DELETE.