1

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

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

SELECT relname,n_live_tup
  FROM pg_stat_user_tables
  WHERE n_live_tup=0;

我如何将其与 a 联系起来DROP

4

1 回答 1

1

试试这个

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;
于 2013-07-02T08:45:34.410 回答