【发布时间】:2018-09-07 09:23:57
【问题描述】:
我需要从具有后缀“alpha”的数据库 (Postgres) 中删除表(多个表)。数据库中存在近 500 个具有不同后缀的表,我愿意只删除后缀为“alpha”的表。
表名示例:inventory_20170312_alpha
【问题讨论】:
标签: sql postgresql
我需要从具有后缀“alpha”的数据库 (Postgres) 中删除表(多个表)。数据库中存在近 500 个具有不同后缀的表,我愿意只删除后缀为“alpha”的表。
表名示例:inventory_20170312_alpha
【问题讨论】:
标签: sql postgresql
你可以使用:
SELECT format('DROP TABLE IF EXISTS %s;' ,
(SELECT string_agg(table_name, ',')
FROM INFORMATION_SCHEMA.TABLES WHERE table_name LIKE '%alpha'));
警告!我假设其他表没有 FK。
【讨论】:
您可以在下面尝试此代码。如果您正在开发真实产品或类似产品,请先在测试环境中运行它。还要确保您的用户 ID 具有在数据库中删除表的权限。
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
【讨论】: