如何从命令行中删除PostgreSQL中的所有表?
我不想删除数据库本身,只是所有的表格,并在他们所有的数据。
#1楼
根据上面的Pablo,就案例而言,从特定模式中删除:
select 'drop table "' || tablename || '" cascade;'
from pg_tables where schemaname = 'public';
#2楼
如果您有PL / PGSQL过程语言安装 ,你可以使用下面的无壳/ Perl的外部脚本删除一切。
DROP FUNCTION IF EXISTS remove_all();
CREATE FUNCTION remove_all() RETURNS void AS $$
DECLARE
rec RECORD;
cmd text;
BEGIN
cmd := '';
FOR rec IN SELECT
'DROP SEQUENCE ' || quote_ident(n.nspname) || '.'
|| quote_ident(c.relname) || ' CASCADE;' AS name
FROM
pg_catalog.pg_class AS c
LEFT JOIN
pg_catalog.pg_namespace AS n
ON
n.oid = c.relnamespace
WHERE
relkind = 'S' AND