一次删除多个表

Drop multiple tables at once

在 SQL 中,您可以使用如下简单查询一次删除多个 table: 下降 table a, b, c

在 Snowflake 中这不起作用。有没有办法一次删除多个 table?

你好,如果你有要删除的表列表,你可以像这样执行两步,在其中生成 DDL。

SELECT 'DROP TABLE ' || table_name || ';' 
FROM  INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE IN ('TAB1', 'TAB2');

也许您可以创建一个简单的 SP 来为您完成此操作:

create or replace procedure drop_tables(list varchar)
returns string
language javascript
as 
$$
    var l = LIST.split(',');
    var sqls = [];
    for (i=0; i<l.length; i++) {
        var sql = "DROP TABLE IF EXISTS " + l[i].trim();
        var rs = snowflake.execute( {sqlText: sql});
        
        sqls.push(sql);
    }
    
    return JSON.stringify(sqls);
$$;

call drop_tables('mytest,test , my_table ');

+---------------------------------------------------------------------------------------------+
| DROP_TABLES                                                                                 |
|---------------------------------------------------------------------------------------------|
| ["DROP TABLE IF EXISTS mytest","DROP TABLE IF EXISTS test","DROP TABLE IF EXISTS my_table"] |
+---------------------------------------------------------------------------------------------+