Czy istnieje sposób na utworzenie kopii zapasowej pojedynczej tabeli w bazie danych przy użyciu postgres? I jak? Czy to działa również z poleceniem pg_dump?
postgresql
backup
pg-dump
Elitmiar
źródło
źródło
pg_restore --host localhost --port 5432 --username postgres --dbname "anydb" --table public.tablename -Ft --verbose "/path/filename.backup"
ale wyszło:pg_restore: [tar archiver] corrupt tar header found in --
psql -U username -d database -1 -f your_dump.sql
--ignore-version
. Odpowiedź Prashanta Kumara, która jest prostsza, zadziałała dla mnie.Jeśli korzystasz z Ubuntu,
sudo su postgres
pg_dump -d <database_name> -t <table_name> > file.sql
Upewnij się, że jesteś wykonaniem polecenia, gdzie
postgres
użytkownik ma uprawnienia do zapisu (np/tmp
)Edytować
Jeśli chcesz zrzucić plik .sql na inny komputer, możesz rozważyć pominięcie informacji o właścicielu zapisywanych w pliku .sql.
Możesz użyć
pg_dump --no-owner -d <database_name> -t <table_name> > file.sql
źródło
pg_dump -d <database_name> > file.sql
pg_dump -t <table_name> <database_name> > file.sql
Możesz wykonać kopię zapasową pojedynczej tabeli, ale sugerowałbym wykonanie kopii zapasowej całej bazy danych, a następnie przywrócenie dowolnej tabeli, której potrzebujesz. Zawsze dobrze jest mieć kopię zapasową całej bazy danych.
9 sposobów korzystania z pg_dump
źródło
max(id)
na moim stole. to jest odpowiedź, która zadziałała i jestem przekonany, patrząc na wygenerowany sql, że mogłem go przywrócić.Jeśli wolisz graficzny interfejs użytkownika, możesz użyć pgAdmin III (Linux / Windows / OS X). Wystarczy kliknąć prawym przyciskiem myszy wybrany stół, a następnie wybrać opcję „kopia zapasowa”. Stworzy
pg_dump
dla ciebie polecenie.źródło
Jako dodatek do odpowiedzi Franka Heikena, jeśli chcesz użyć
INSERT
instrukcji zamiastcopy from stdin
, powinieneś określić--inserts
flagępg_dump --host localhost --port 5432 --username postgres --format plain --verbose --file "<abstract_file_path>" --table public.tablename --inserts dbname
Zauważ, że pominąłem
--ignore-version
flagę, ponieważ jest przestarzała.źródło