Redshift:如果存在则截断表

时间:2018-07-10 09:56:19

标签: sql amazon-redshift truncate drop-table

使用TRUNCATE TABLE代替DELETErecommended。但是,截断表不支持IF EXISTS子句。替代方法是DROP TABLE并重新创建,但需要DDL。如果仅存在表,有没有办法做TRUNCATE TABLE

1 个答案:

答案 0 :(得分:2)

您有两种选择可以实现:

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

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

CREATE TABLE @tobetruncated IF NOT EXISTS
TRUNCATE TABLE @tobetruncated
  

注意:这并非特定于REDSHFIT,除非它支持特殊功能(例如我知道Oracle具有TABLE_EXISTS_ACTION的功能),否则它大部分适用于所有DB。截断就像一个全有或全无的操作,这就是使它比DELETE更好的性能。