Mój komputer się zepsuł, ale na szczęście utworzyłem kopię zapasową folderu C: \ Program Files \ PostgreSQL.
Teraz pracuję na nowym komputerze i chciałbym zaimportować poprzednie bazy danych Postgres, które są przechowywane na dysku zewnętrznym.
Chciałbym wyeksportować schemat konkretnej bazy danych, która znajduje się w folderze kopii zapasowej.
Plik PostgreSQL\8.3\data\global\pg_database
zawiera informacje o bazach danych i ich identyfikatorach OID; na przykład:
"db1" 20012
"db2" 23456
Chciałbym wyeksportować schemat „db1”.
W folderze znajduje się folder o nazwie „20012”, "PostgreSQL\8.3\data\base\20012"
który zawiera wiele plików [500 plików].
Czy istnieje sposób na wyeksportowanie schematu tej bazy danych?
Zwróć uwagę, że wszystkie pliki bazy danych Postgresql znajdują się na zewnętrznym dysku twardym i chciałbym wyeksportować schemat tej bazy danych w pliku SQL, pobrać ten plik, uruchomić go i utworzyć lokalnie tę samą dokładną bazę danych.
źródło
pg_dump -s databasename > schema.sql
zapisze wynik doschema.sql
plikuW Linuksie możesz to zrobić
Może może działać również w systemie Windows , jeśli nie, spróbuj tego samego z pg_dump.exe
źródło
Korzystam z Postgres 9.6, w którym musiałem wyeksportować określony schemat wraz z danymi.
Użyłem następującego polecenia:
Jeśli potrzebujesz tylko schematu bez danych, użyj przełącznika
s
zamiastn
Poniżej znajduje się lista przełączników pg_dump:
źródło
Zwróć uwagę, że masz wystarczające uprawnienia dostępu do tego schematu. Jeśli chcesz wykonać kopię zapasową jako określony użytkownik, dodaj nazwę użytkownika w tym poleceniu poprzedzoną
-U
źródło
Jeśli chcesz tylko tworzyć tabele, możesz to zrobić
pg_dump -s databasename | awk 'RS="";/CREATE TABLE[^;]*;/'
źródło
Dla Linux: (dane wyłączone)
pg_dump -s -t tablename databasename > dump.sql
(Dla określonej tabeli w bazie danych)pg_dump -s databasename > dump.sql
(Dla całej bazy danych)źródło
skonfiguruj nowy serwer postgresql i zamień jego folder danych na pliki z dysku zewnętrznego.
Będziesz wtedy mógł uruchomić ten serwer postgresql i pobrać dane za pomocą pg_dump (pg_dump -s tylko dla schematu, jak wspomniano)
źródło
Powinieneś użyć czegoś takiego
pg_dump --schema=your_schema_name db1
, po szczegóły zajrzyj tutajźródło