在我的急速分区中有一个相当大的表,我创建了一个简单的sql脚本来创建大约4,000个表。现在事情已经平静下来了,我可以看到我对大多数分区没用,因为我已经没有插入它们。
我现在想要清理那些空表 - 如何使用SQL删除它们?我相信我有一部分解决方案:
SELECT relname,n_live_tup
FROM pg_stat_user_tables
WHERE n_live_tup=0;
如何使用DROP
?
答案 0 :(得分:0)
试试这个
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;