在我的仓促分区一个相当大的表中,我创建了一个简单的 sql 脚本来创建大约 4,000 个表。现在事情已经平静下来,我可以看到我对大多数分区没有用处,因为我在其中插入了零个分区。
我现在想清理那些空表——如何使用 SQL 删除它们?我相信我有部分解决方案:
SELECT relname,n_live_tup
FROM pg_stat_user_tables
WHERE n_live_tup=0;
我如何将其与 a 联系起来DROP
?
在我的仓促分区一个相当大的表中,我创建了一个简单的 sql 脚本来创建大约 4,000 个表。现在事情已经平静下来,我可以看到我对大多数分区没有用处,因为我在其中插入了零个分区。
我现在想清理那些空表——如何使用 SQL 删除它们?我相信我有部分解决方案:
SELECT relname,n_live_tup
FROM pg_stat_user_tables
WHERE n_live_tup=0;
我如何将其与 a 联系起来DROP
?
试试这个
CREATE OR REPLACE FUNCTION drop_table(name TEXT)
RETURNS void AS
$BODY$
DECLARE statement TEXT;
BEGIN
statement := 'DROP TABLE ' || name;
EXECUTE statement;
END;
$BODY$
LANGUAGE plpgsql VOLATILE SECURITY DEFINER
COST 100;
SELECT drop_table(relname)
FROM pg_stat_user_tables
WHERE n_live_tup = 0;