在postgres中删除空表

时间:2013-07-02 08:30:57

标签: postgresql sql-drop

在我的急速分区中有一个相当大的表,我创建了一个简单的sql脚本来创建大约4,000个表。现在事情已经平静下来了,我可以看到我对大多数分区没用,因为我已经没有插入它们。

我现在想要清理那些空表 - 如何使用SQL删除它们?我相信我有一部分解决方案:

SELECT relname,n_live_tup
  FROM pg_stat_user_tables
  WHERE n_live_tup=0;

如何使用DROP

将其链接起来

1 个答案:

答案 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;