Как мне снять все ограничения в базе данных Postgres?
1. Drop Constraints
Несколько лет назад для своего сайта (o7planning.org) я использовал базу данных Oracle. Хотя это хорошая база данных, она слишком громоздка и её переустановка требует очень много времени. Поэтому я выбрал базу данных Postgres для замены Oracle.
В то время моя проблема заключалась в том, чтобы переносить данные из Oracle в Postgres. Я создал простой инструмент, выполняющий запрос каждой таблицы в Oracle и вставляющий её в таблицы Postgres. Ограничения (constrants) на Postgres должны быть drop (сняты) для обеспечения успешной вставки данных, и они будут воссозданы.
Приведенный нижезапрос позволяет заставить скрипт drop (отбросить) все ограничения на Postgres, скопируйте полученный результат и сохраните его в файле, например drop_constraints.sql.
Generate Drop-Script
SELECT 'ALTER TABLE "'||nspname||'"."'||relname||'" DROP CONSTRAINT "'||conname||'";'
FROM pg_constraint
INNER JOIN pg_class ON conrelid=pg_class.oid
INNER JOIN pg_namespace ON pg_namespace.oid=pg_class.relnamespace
ORDER BY CASE WHEN contype='f' THEN 0 ELSE 1 END,contype,nspname,relname,conname
Затем выполните следующий запрос, чтобы заставить скрипт воссоздать все ограничения. Скопируйте полученный результат и сохраните его в файле, например recreate_constraints.sql.
Generate Recreate-Script
SELECT 'ALTER TABLE "'||nspname||'"."'||relname||'" ADD CONSTRAINT "'||conname||'" '||
pg_get_constraintdef(pg_constraint.oid)||';'
FROM pg_constraint
INNER JOIN pg_class ON conrelid=pg_class.oid
INNER JOIN pg_namespace ON pg_namespace.oid=pg_class.relnamespace
ORDER BY CASE WHEN contype='f' THEN 0 ELSE 1 END DESC,
contype DESC,nspname DESC,relname DESC,conname DESC;
Наконец, выполните скрипт drop на pgAdmin или drop_constrants.sql через Terminal.
sudo -u postgres psql
\o /path/to/drop_constraints.sql
Руководства База данных PostgreSQL
- Установить базу данных PostgreSQL в Windows
- Установить базу данных PostgreSQL в Ubuntu
- Установить базу данных PostgreSQL в Mac OS
- Установите pgAdmin 3, 4 в Ubuntu
- Настройте PostgreSQL для разрешения удаленных подключений
- Резервное копирование и восстановление базы данных PostGres с помощью pgAdmin 4
- Как мне снять все ограничения в базе данных Postgres?
Show More