БД, созданные мной/по определенному имени владельца? сейчас там 350 таблиц, 300 из которых созданные под другим юзернэймом, их хотелось бы дропнуть все махом
Можно получить данные о таблицах из informational_schema, сгенерировать DDL и выполнить его через execute immediate
Одной командой нельзя. Придётся писать как минимум анонимную процедуру
Недавно пару строк накидал по этой теме DO $$ DECLARE owner_table varchar := 'name'; rec record; fk record; BEGIN FOR rec IN (SELECT schemaname,tablename,oid FROM pg_tables JOIN pg_class ON pg_class.relname=pg_tables.tablename where tableowner=owner_table) LOOP FOR fk IN (select conname,conrelid::regclass as table_name FROM pg_constraint WHERE contype IN ('f') AND confrelid=rec.oid) LOOP RAISE NOTICE 'ALTER TABLE % DROP CONSTRAINT %;',fk.table_name,fk.conname; END LOOP; RAISE NOTICE 'DROP TABLE %;',rec.tablename; END LOOP; END; $$;
только аккуратнее с такими скриптами, такое лучше вообще не хранить, по этому я просто вывод команды сделал, без execute, не дай бог где-то не в том месте сделать
Обсуждают сегодня