724 Stimmen

SQL-Dump in PostgreSQL-Datenbank importieren

Wir haben den Hoster gewechselt und der alte Hoster hat uns einen SQL-Dump der PostgreSQL-Datenbank unserer Website zur Verfügung gestellt.

Ich versuche nun, dies auf einem lokalen WAMP-Server einzurichten, um es zu testen.

Das einzige Problem ist, dass ich keine Ahnung habe, wie ich diese Datenbank in den PostgreSQL 9, den ich eingerichtet habe, importieren kann.

Ich habe es mit pgAdmin III versucht, aber ich kann keine Importfunktion finden. Also habe ich einfach den SQL-Editor geöffnet und den Inhalt des Dumps dort eingefügt und ausgeführt. Die Tabellen werden erstellt, aber ich erhalte immer wieder Fehlermeldungen, wenn ich versuche, die Daten darin zu speichern.

ERROR:  syntax error at or near "t"
LINE 474: t 2011-05-24 16:45:01.768633 2011-05-24 16:45:01.768633 view...

The lines:
COPY tb_abilities (active, creation, modtime, id, lang, title, description) FROM stdin;
t   2011-05-24 16:45:01.768633  2011-05-24 16:45:01.768633  view    nl ...  

Ich habe auch versucht, dies mit der Eingabeaufforderung zu tun, aber ich kann den benötigten Befehl nicht finden.

Wenn ich das tue

psql mydatabase < C:/database/db-backup.sql;

Ich erhalte die Fehlermeldung

ERROR:  syntax error at or near "psql"
LINE 1: psql mydatabase < C:/database/db-backu...
        ^

Wie kann ich die Datenbank am besten importieren?

58voto

Feuda Punkte 2065

Funktioniert ziemlich gut, in der Kommandozeile sind alle Argumente erforderlich, -W steht für Passwort

psql -h localhost -U user -W -d database_name -f path/to/file.sql

30voto

alan Punkte 2940

Nur so zum Spaß, wenn Ihr Dump komprimiert ist, können Sie etwas tun wie

gunzip -c filename.gz | psql dbname

Wie Jacob erwähnte, ist die PostgreSQL-Dokumente beschreiben dies alles sehr gut.

25voto

Vincent Tang Punkte 3212

Ich habe viele verschiedene Lösungen ausprobiert, um mein Postgres-Backup wiederherzustellen. Unter MacOS hatte ich Probleme mit verweigerten Zugriffsrechten, keine Lösung schien zu funktionieren.

So habe ich es zum Laufen gebracht:

Postgres wird mit Pgadmin4 geliefert. Wenn Sie macOS verwenden, können Sie auf CMD + SPACE und tippen pgadmin4 um es auszuführen. Daraufhin wird eine Browser-Registerkarte in Chrome geöffnet.

Wenn Sie Probleme haben, pgadmin4 zum Laufen zu bringen, versuchen Sie killall pgAdmin4 in Ihrem Terminal und versuchen Sie es dann erneut.


Schritte zum Erhalt von pgadmin4 + Sicherung/Wiederherstellung

1. Erstellen Sie die Sicherung

Klicken Sie dazu mit der rechten Maustaste auf die Datenbank -> "Sicherung".

enter image description here

2. Geben Sie der Datei einen Namen.

Wie test12345 . Klicken Sie auf Sicherung. Dadurch wird ein binärer Dateidump erstellt, der nicht in einer .sql Format

enter image description here

3. Sehen Sie, wo es heruntergeladen wurde

Es sollte ein Popup-Fenster unten rechts auf Ihrem Bildschirm erscheinen. Klicken Sie auf die Seite "Weitere Details", um zu sehen, wohin Ihre Sicherung heruntergeladen wurde

enter image description here

4. Suchen Sie den Speicherort der heruntergeladenen Datei

In diesem Fall ist es /users/vincenttang

enter image description here

5. Wiederherstellen der Sicherung aus pgadmin

Wenn Sie die Schritte 1 bis 4 korrekt ausgeführt haben, haben Sie eine binäre Wiederherstellungsdatei. Es könnte der Fall eintreten, dass Ihr Kollege Ihre Wiederherstellungsdatei auf seinem lokalen Rechner verwenden möchte. Lassen Sie diese Person zu pgadmin gehen und wiederherstellen

Klicken Sie dazu mit der rechten Maustaste auf die Datenbank -> "Wiederherstellen".

enter image description here

6. Datei-Finder auswählen

Stellen Sie sicher, dass Sie den Speicherort der Datei manuell auswählen, ziehen Sie die Datei NICHT per Drag & Drop auf die Uploader-Felder in pgadmin. Denn Sie werden auf Fehler bei den Berechtigungen stoßen. Suchen Sie stattdessen die Datei, die Sie gerade erstellt haben:

enter image description here

7. Diese Datei finden

Möglicherweise müssen Sie den Filter unten rechts auf "Alle Dateien" ändern. Suchen Sie danach die Datei aus Schritt 4. Klicken Sie nun unten rechts auf die Schaltfläche "Auswählen", um zu bestätigen

enter image description here

8. Diese Datei wiederherstellen

Sie sehen diese Seite erneut, wobei der Speicherort der Datei ausgewählt ist. Fahren Sie fort und stellen Sie sie wieder her

enter image description here

9. Erfolg

Wenn alles in Ordnung ist, sollte unten rechts eine Anzeige erscheinen, die eine erfolgreiche Wiederherstellung anzeigt. Sie können zu Ihren Tabellen navigieren, um zu sehen, ob die Daten in jeder Tabelle korrekt wiederhergestellt wurden.

10. Wenn es nicht erfolgreich war:

Sollte Schritt 9 fehlschlagen, versuchen Sie, Ihr altes öffentliches Schema in Ihrer Datenbank zu löschen. Gehen Sie zu "Abfragetool".

enter image description here

Führen Sie diesen Codeblock aus:

DROP SCHEMA public CASCADE; CREATE SCHEMA public;

enter image description here

Versuchen Sie nun die Schritte 5 bis 9 erneut, es sollte funktionieren.

Zusammenfassung

Auf diese Weise musste ich meine Postgres-Sicherung sichern/wiederherstellen, als ich Probleme mit den Fehlerrechten hatte und mich nicht als Superuser anmelden konnte. Oder setzen Sie die Anmeldedaten für Lesen/Schreiben mit chmod für Aktenordner. Dieser Arbeitsablauf funktioniert für einen Binärdateidump mit der Voreinstellung "Benutzerdefiniert" von pgadmin. Ich nehme an .sql ist der gleiche Weg, aber ich habe das noch nicht getestet

20voto

rubo77 Punkte 17467

Vergewissern Sie sich, dass die Datenbank, in die Sie importieren möchten, erstellt wurde, dann können Sie den Speicherauszug mit

sudo -u postgres -i psql testdatabase < db-structure.sql

Wenn Sie die gesamte Datenbank überschreiben wollen, löschen Sie zunächst die Datenbank

# be sure you drop the right database !!!
#sudo -u postgres -i psql -c "drop database testdatabase;"

und dann neu erstellen mit

sudo -u postgres -i psql -c "create database testdatabase;"

18voto

AConsumer Punkte 1891

Folgen Sie den Schritten:

  1. Wechseln Sie zur Shell psql
  2. \c db_name
  3. \i path_of_dump [eg:-C:/db_name.pgsql]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X