我需要从具有后缀“alpha”的数据库(Postgres)中删除表(多个表)。数据库中有近500个表格,它们有不同的后缀,我愿意只使用后缀' alpha'来删除表格。
表名示例:inventory_20170312_alpha
答案 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