sql >> Databasteknik >  >> RDS >> PostgreSQL

Återställa en postgres backup-fil med kommandoraden?

Det finns två verktyg att titta på, beroende på hur du skapade dumpfilen.

Din första referenskälla bör vara mansidan pg_dump(1) eftersom det är det som skapar själva soptippen. Det står:

Dumpar kan matas ut i skript- eller arkivfilformat. Skriptdumpar är vanliga textfiler som innehåller de SQL-kommandon som krävs för att rekonstruera databasen till det tillstånd den var i när den sparades. För att återställa från ett sådant skript, mata det med topsql(1). Skriptfiler kan användas för att rekonstruera databasen även på andra maskiner och andra arkitekturer; med vissa ändringar även på andra SQL-databasprodukter.

De alternativa arkivfilformaten måste användas med pg_restore(1) för att bygga om databasen. De tillåter pg_restore att vara selektiva om vad som återställs, eller till och med att ordna om objekten innan de återställs. Arkivfilformaten är designade för att kunna bäras över olika arkitekturer.

Så det beror på hur det dumpades. Du kan förmodligen ta reda på det med den utmärkta file(1) kommando - om det nämner ASCII-text och/eller SQL, bör det återställas med psql annars bör du förmodligen använda pg_restore

Det är ganska enkelt att återställa:

psql -U username -d dbname < filename.sql

-- For Postgres versions 9.0 or earlier
psql -U username -d dbname -1 -f filename.sql

eller

pg_restore -U username -d dbname -1 filename.dump

Kolla in deras respektive manpage - det finns en hel del alternativ som påverkar hur återställningen fungerar. Du kan behöva rensa dina "live"-databaser eller återskapa dem från mall0 (som påpekats i en kommentar) innan du återställer, beroende på hur dumparna genererades.



  1. Exempel på att konvertera "datum" till "datetime2" i SQL Server (T-SQL)

  2. FEL 1045 (28000):Åtkomst nekad för användaren 'root'@'localhost' (med lösenord:JA)

  3. Åtkomst med Microsoft SQL Server – Importera stora datamängder med SSIS

  4. Snabbaste sättet att utföra kapslade bulkinfogningar med användning av scope_identity()?