如何使用Where子句/条件删除表?

时间:2018-03-28 15:42:24

标签: sql postgresql

我需要从具有后缀“alpha”的数据库(Postgres)中删除表(多个表)。数据库中有近500个表格,它们有不同的后缀,我愿意只使用后缀' alpha'来删除表格。

表名示例:inventory_20170312_alpha

2 个答案:

答案 0 :(得分:1)

您可以使用:

SELECT format('DROP TABLE IF EXISTS %s;' ,
              (SELECT string_agg(table_name, ',') 
               FROM INFORMATION_SCHEMA.TABLES  WHERE table_name LIKE '%alpha'));

警告!我假设其他牌桌没有FK。

<强> DBFiddle Demo

答案 1 :(得分:0)

您可以尝试以下代码。如果您正在处理真实产品或类似产品,请先在测试环境中运行。还要确保您的用户标识具有在数据库中删除表的权限。

DECLARE @cmd varchar(4000)
DECLARE cmds CURSOR FOR
SELECT 'drop table [' + Table_Name + ']'
FROM INFORMATION_SCHEMA.TABLES
WHERE Table_Name LIKE '%alpha'

OPEN cmds
WHILE 1 = 1
BEGIN
    FETCH cmds INTO @cmd
    IF @@fetch_status != 0 BREAK
    EXEC(@cmd)
END
CLOSE cmds;
DEALLOCATE cmds