Этот скрипт будет генерировать команды DDL, чтобы отбросить их все:
SELECT 'DROP TABLE ' || t.oid::regclass || ';'
FROM pg_class t
-- JOIN pg_namespace n ON n.oid = t.relnamespace -- to select by schema
WHERE t.relkind = 'r'
AND t.relname ~~ E'doors\_%' -- enter search term for table here
-- AND n.nspname ~~ '%myschema%' -- optionally select by schema(s), too
ORDER BY 1;
Приведение t.oid::regclass
обеспечивает работу синтаксиса для идентификаторов со смешанным регистром, зарезервированных слов или специальных символов в именах таблиц. Это также предотвращает внедрение SQL-кода и добавляет имя схемы там, где это необходимо. Подробнее о типах идентификаторов объектов в руководстве .
О пути поиска схемы.
Вы также можете автоматизировать удаление, но неразумно не проверять, что вы на самом деле удаляете перед тем, как сделать это.
Вы можете добавить CASCADE
к каждому оператору в DROP в зависимости от объектов (представлений и ссылок на внешние ключи). Но, опять же, это неразумно , если вы не очень хорошо знаете, что делаете. Ограничения внешнего ключа не являются большой потерей, но это также полностью отбросит все зависимые представления. Без CASCADE
вы получите сообщения об ошибках, информирующие вас о том, какие объекты мешают вам сбросить таблицу. И тогда вы можете справиться с этим.