Wie Drop ich alle Einschränkungen in einer Postgres-Datenbank?
1. Drop Constraints
Vor einigen Jahren verwendete meine Webseite (o7planning.org) die Datenbank Oracle. Das ist eine gute Datenbank, aber sie ist zu umständlich und die Neuinstallation dauerte viel Zeit. Ich denke an einer neuen Datenbank um Oracle zu ersetzen und deshalb wird Postgres ausgewählt.
Mein damaliges Problem war, wie man Daten von Oracle nach Postgres konviertiert. Ich habe ein einfaches Tool geschrieben, um jede Tabelle in Oracle abzufragen (query) und in Tabelle Postgres einzufügen. Die Constrants auf Postgres müssen drop (fallen lassen) um eine erfolgreiche Dateneinfügung zu gewährleisten und sie werden dann neu erstellt.
Die folgende Abfrage hilft mir, das Skript dazu zu bringen, alle Constrants auf Postgres zu drop, das Ergebnis zu kopieren und in einer Datein zu speichern, z.B: 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
Führen Sie zum nächsten die folgende Abfrage aus, damit das Skript alle Constrants neu erstellt. Kopieren Sie das Ergebenis und speichern Sie es in einer Datei, z.B: 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;
Schließlich führe ich das Skript drop auf pgAdmin aus, oder führe die Datei drop_constrants.sql über Terminal aus.
sudo -u postgres psql
\o /path/to/drop_constraints.sql
Anleitungen PostgreSQL Datenbank
- Installieren Sie die PostgreSQL-Datenbank unter Windows
- Installieren Sie die PostgreSQL-Datenbank unter Ubuntu
- Installieren Sie die PostgreSQL-Datenbank unter Mac OS
- Installieren Sie pgAdmin 3, 4 unter Ubuntu
- Konfigurieren Sie PostgreSQL so, dass Remoteverbindungen zulässig sind
- Sichern und Wiederherstellen der PostGres-Datenbank mit pgAdmin 4
- Wie Drop ich alle Einschränkungen in einer Postgres-Datenbank?
Show More