Zum Hauptinhalt springen

So bereinigen Sie eine postgresql-Tabelle vollständig: Anweisung und Beispiele - [Site Name]

Wenn Sie mit einer PostgreSQL-Datenbank arbeiten, müssen Sie die Tabelle von allen Datensätzen bereinigen. Dies kann nützlich sein, bevor Sie eine Tabelle mit neuen Daten füllen oder irrelevante Informationen löschen. Wenn Sie eine Tabelle in PostgreSQL löschen, können Sie sie leer machen, indem Sie die Struktur und die Indizes beibehalten. In diesem Artikel werden wir uns eine detaillierte Anweisung ansehen und Beispiele geben, wie Sie eine Tabelle in PostgreSQL vollständig bereinigen können.

Verwenden Sie den folgenden Befehl, um eine Tabelle in PostgreSQL zu bereinigen TRUNCATE. Dieser Befehl löscht alle Datensätze aus der Tabelle, löscht jedoch nicht die Tabelle selbst. Daher bleiben alle verknüpften Objekte wie Schlüssel, Indizes oder Regeln unverändert.

Beispiel für die Verwendung eines Befehls TRUNCATE:

TRUNCATE table_name;

Anstatt table_name sie müssen den Namen der Tabelle angeben, die Sie löschen möchten. Zum Beispiel:

TRUNCATE employees;

Dieser Befehl löscht alle Datensätze aus der Tabelle employees.

Wenn Sie den Befehl verwenden TRUNCATE seien Sie vorsichtig, da es nicht rückgängig gemacht werden kann (ROLLBACK). Daher wird empfohlen, vor der Ausführung eine Sicherungskopie der Daten zu erstellen oder sicherzustellen, dass Sie die Tabelle wirklich bereinigen möchten.

Vorbereitung für die Reinigung

Bevor Sie mit der vollständigen Bereinigung der PostgreSQL-Tabelle beginnen, müssen Sie einige vorbereitende Schritte ausführen. Es ist wichtig sicherzustellen, dass Sie über volle Administratorrechte für die Datenbank verfügen und Zugriff auf die Befehlszeile oder das Dienstprogramm zur Arbeit mit der Datenbank haben.

Stellen Sie zunächst sicher, dass Sie sich in der richtigen Datenbank befinden. Verwenden Sie den Befehl \c, um zur gewünschten Datenbank zu wechseln.

Stellen Sie dann sicher, dass alle Benutzer und Sitzungen, die der Tabelle zugeordnet sind, geschlossen sind. Verwenden Sie dazu die Abfrage:

SELECT pg_terminate_backend(pg_stat_activity.pid)FROM pg_stat_activityWHERE pg_stat_activity.datname = 'имя_базы_данных'AND pid <> pg_backend_pid();

Ersetzen Sie Datenbankname durch den Namen Ihrer Datenbank.

Überprüfen Sie als Nächstes alle abhängigen Objekte in der Tabelle. Überprüfen Sie die Einschränkungen (constraints) und Trigger (triggers), um sicherzustellen, dass sie die Bereinigung nicht stören. Führen Sie die folgende Abfrage aus:

SELECT conname, pg_size_pretty(pg_total_relation_size(c.oid)) AS total_sizeFROM pg_constraint cJOIN pg_class cl ON (c.conrelid = cl.oid)WHERE cl.relname = 'имя_таблицы';

Ersetzen Sie in ähnlicher Weise Tabellenname durch den Namen der Tabelle, die Sie löschen möchten.

Überprüfen Sie schließlich alle Indizes, die der Tabelle zugeordnet sind. Führen Sie die folgende Abfrage aus:

SELECT indexrelid, pg_size_pretty(pg_total_relation_size(quote_ident(indexrelname)::regclass)) AS total_sizeFROM pg_indexWHERE indrelid = quote_ident('имя_таблицы')::regclass;

Ersetzen Sie Tabellenname durch den Namen der Tabelle, die Sie löschen möchten.

Nachdem Sie alle oben genannten Schritte ausgeführt haben, sind Sie bereit, die Daten vollständig aus der Tabelle zu entfernen.

Erstellen einer Sicherung

Um eine Tabelle zu sichern, müssen Sie den Befehl pg_dump verwenden, mit dem Sie den Inhalt der Tabelle in einer Datei speichern können.

Beispielbefehl zum Sichern einer Tabelle mit dem Namen my_table :

pg_dump -U username -h hostname -p port -t my_table -f backup.sql
  • -U : Datenbankbenutzername
  • -h : Adresse des Datenbankhosts
  • -p : port des Datenbankhosts
  • -t : Tabellenname
  • -f : Name der zu sichernden Datei

Nachdem Sie den Befehl ausgeführt haben, wird die Sicherung in der Backup-Datei gespeichert.sql .

Beachten Sie, dass Sie zum Erstellen einer Sicherung die Tabellenzugriffsrechte und die Anmeldeinformationen eines Benutzers mit ausreichenden Rechten benötigen.

Durch regelmäßige Backups Ihrer Tabellen können Sie sicher sein, dass Ihre Daten sicher sind und sie bei Bedarf wiederherstellen können.

Überprüfen der Zugriffsrechte

Bevor Sie mit der vollständigen Bereinigung einer Tabelle in PostgreSQL beginnen, müssen Sie sicherstellen, dass der Benutzer über ausreichende Zugriffsberechtigungen verfügt, um diesen Vorgang auszuführen. Dazu können Sie den Befehl verwenden:

SELECT has_table_privilege('Benutzername', 'Tabellenname', 'Zugriffsrechte');

Ersetzen Sie in diesem Befehl:

  • Benutzername - der Name des Datenbankbenutzers, für den die Zugriffsrechte überprüft werden sollen;
  • tabellenname - der Name der Tabelle, für die die Zugriffsrechte überprüft werden;
  • Zugriffsrecht - die Art des zu überprüfenden Zugangs. Zum Beispiel 'SELECT', 'INSERT', 'UPDATE' oder 'DELETE'.

Wenn der Befehl true zurückgibt, hat der Benutzer die Berechtigung, den angegebenen Tabellenzugriffstyp auszuführen. Wenn der Befehl den Wert false zurückgibt, verfügt der Benutzer nicht über die erforderlichen Rechte, und Sie müssen ihm vor dem Löschen der Tabelle die entsprechenden Berechtigungen erteilen.

Löschen einer Tabelle mit DELETE

Um alle Datensätze aus einer Tabelle zu entfernen, müssen Sie die folgende SQL-Abfrage ausführen:

DELETE FROM table_name;

Wo table_name - der Name der Tabelle, die Sie löschen möchten.

Wenn Ihre Datenbank beispielsweise eine Tabelle mit dem Namen "users" enthält, müssen Sie die folgende Abfrage ausführen, um sie zu löschen:

DELETE FROM users;

Seien Sie beim Ausführen dieses Befehls vorsichtig, da dadurch alle Datensätze aus der Tabelle gelöscht werden, ohne dass sie wiederhergestellt werden können. Daher wird empfohlen, vor der Ausführung dieses Vorgangs eine Sicherungskopie der Daten zu erstellen.

Alle Zeilen löschen

Wenn Sie alle Zeilen aus einer Tabelle in PostgreSQL löschen möchten, können Sie die DELETE-Anweisung mit einer leeren WHERE-Bedingung verwenden. Dadurch werden alle Zeilen aus der Tabelle entfernt.

Hier ist ein Beispiel für einen SQL-Befehl zum Entfernen aller Zeilen aus der Tabelle "users":

DELETE FROM users;

Sie können "users" durch den Namen Ihrer Tabelle ersetzen, wenn Sie alle Zeilen aus einer anderen Tabelle entfernen möchten.

Bitte seien Sie bei dieser Operation vorsichtig, da sie irreversibel ist und zu einem vollständigen Datenverlust führt. Stellen Sie sicher, dass Sie eine Sicherungskopie der Tabelle erstellt haben oder dass Sie bei Bedarf andere Möglichkeiten haben, die Daten wiederherzustellen.

Bedingte Entfernung

Die Syntax des DELETE-Operators lautet wie folgt:

DELETE FROM название_таблицыWHERE условие;

Beachten Sie, dass Sie nach dem Schlüsselwort DELETE den Namen der Tabelle angeben müssen, aus der die Daten gelöscht werden sollen. Nach dem WHERE-Schlüsselwort wird dann die Bedingung für das Löschen von Zeilen angegeben.

Hier ist ein Beispiel für das Löschen aller Zeilen in der Tabelle employees , bei denen das Gehalt kleiner als 2000 ist:

DELETE FROM employeesWHERE salary < 2000;

Nach Abschluss dieser Abfrage werden alle Zeilen aus der Tabelle employees gelöscht, deren Gehaltsspaltenwert kleiner als 2000 ist.

Um alle Zeilen aus einer Tabelle zu entfernen, ohne eine Bedingung anzugeben, können Sie die folgende Syntax verwenden:

DELETE FROM название_таблицы;

Beachten Sie, dass in diesem Fall alle Zeilen in der Tabelle Tabellenname gelöscht werden.

Datenlöschanforderungen sollten mit Vorsicht verwendet werden, da sie nicht umkehrbar sind. Es wird empfohlen, die Tabelle vor dem Ausführen von Löschanforderungen zu sichern.

Bereinigen einer Tabelle mit TRUNCATE

Führen Sie die folgende Syntax aus, um eine Tabelle mit TRUNCATE zu bereinigen:

TRUNCATE TABLE название_таблицы;

Wo tabellenname - der Name der Tabelle, die Sie löschen möchten.

Beachten Sie die folgenden Punkte, bevor Sie den Befehl TRUNCATE verwenden:

  • Der Befehl TRUNCATE ist ein DDL (Data Definition Language) -Operator und wird daher automatisch committiert (ohne Rollback möglich).
  • Der Befehl TRUNCATE gibt keine Zeilen zurück, daher wird bei Erfolg keine Ausgabe als Ergebnis ausgegeben.
  • TRUNCATE löscht die Tabelle von allen Daten (einschließlich Indizes, Berechtigungen, Regeln, Triggern usw.), aber die Tabelle selbst bleibt bestehen.

Beispiel für die Verwendung des Befehls TRUNCATE:

TRUNCATE TABLE users;

In diesem Beispiel werden alle Daten aus der Tabelle gelöscht users und bringt die Tabelle in ihren ursprünglichen Zustand zurück, ohne die Tabelle selbst zu löschen.

Eigenschaften von TRUNCATE

Bevor Sie jedoch den Befehl verwenden TRUNCATE es ist wichtig, einige Besonderheiten zu berücksichtigen:

1. TRUNCATE setzt die Spaltenbezeichner zurück

Wenn Sie ausführen TRUNCATE für eine Tabelle werden alle Spalten-ID-Sequenzen zurückgesetzt. Das bedeutet, dass wenn Sie nach dem Löschen neue Datensätze zur Tabelle hinzufügen, die ID-Werte von Anfang an beginnen.

2. TRUNCATE kann nicht rückgängig gemacht werden

Da das Team TRUNCATE schreibt keine Daten in die Protokolle, es kann nicht rückgängig gemacht oder zurückgesetzt werden. Daher vor der Ausführung TRUNCATE stellen Sie sicher, dass Sie wirklich alle Daten aus der Tabelle löschen möchten, ohne sie wiederherstellen zu können.

3. TRUNCATE wird nicht für Fremdschlüssel ausgelöst

Wenn die Tabelle Fremdschlüssel hat, lautet der Befehl TRUNCATE löscht keine Zeilen aus verknüpften Tabellen. Sie sollten die Fremdschlüssel entweder deaktivieren, bevor Sie sie verwenden TRUNCATE, oder verwenden Sie die Option CASCADE um die zugehörigen Daten automatisch zu löschen.

Mit dem Befehl TRUNCATE mit Vorsicht und unter Berücksichtigung der obigen Merkmale können Sie eine Tabelle in PostgreSQL schnell und sicher löschen, indem Sie die gewünschten Operationen ausführen, ohne die Tabelle löschen und neu erstellen zu müssen.