it-roy-ru.com

postgresql, куда идет вывод pg_dump

Я пытаюсь сделать резервную копию базы данных postgresql и хочу использовать команду pg_dump.
Я старался :

psql -U postgres
postgres-# pg_dump test > backup.sql

Но я не знаю, куда идет выходной файл.
Любая помощь будет оценена

17
Dariush Jafari

Перейдите в командную строку и каталог postgresql\9.3\bin. 

Пример

,.

..
    c:\Program files\postgresql\9.3\bin> pg_dump -h localhost -p 5432 -U postgres test > D:\backup.sql
...

После вышеупомянутой команды введите пароль пользователя "postgres" и проверьте диск D:\ на наличие файла backup.sql

15
Meem

В моей ситуации (PostgreSQL 9.1.21, Centos 6.7) команда

runuser -l postgres -c 'pg_dump my_database > my_database.sql'

сохранил файл здесь:

/var/lib/pgsql/my_database.sql

Не уверен, верно ли это для других дисков Linux, CentOS и/или версий pgl. Согласно ответу на вопрос, задаваемый этим вопросом, , это правда, но другие пользователи сказали, что файл резервной копии находился в текущем каталоге (по разным причинам большинство людей, читающих эту ветку, отличаются). Ну, я надеюсь, что это может помочь другим пользователям с той же проблемой.

P.s .: если это не путь для вашей ситуации, вы можете попытаться (в Linux) найти его, используя команду ниже (как указано @Bohemian в комментариях к этому вопросу), но это может занять некоторое время:

find / -name 'my_database.sql'

EDIT: Я попытался запустить аналогичную команду в Ubuntu 12.04 (она работает в Ubuntu 18.04):

Sudo -u postgres pg_dump my_database > my_database.sql

И в этом случае файл был сохранен в текущем каталоге, где я запускал команду! Таким образом, оба случая могут происходить в Linux, в зависимости от конкретного дистрибутива, с которым вы работаете

5
Brian Hellekin

Я опаздываю на эту вечеринку, но чувствую, что ни один из ответов не является действительно правильным. Большинство из них подразумевают, что pg_dump где-то записывает файл. Это не так. You отправляет вывод в файл, и you сообщает Shell, где записать этот файл.

В вашем примере pg_dump test > backup.sql, который использует формат plain или SQL, команда pg_dumpнигде не сохраняет никаких файлов. Он просто отправляет вывод в STDOUT, который обычно является вашим экраном, и все готово.

Но в своей команде вы также указали своей командной консоли (терминал, командная строка и т.д.) Перенаправить STDOUT в файл. Это не имеет ничего общего с pg_dump, но является стандартной функцией оболочек, таких как Bash или cmd.exe.

Вы использовали > для перенаправления STDOUT в файл вместо экрана. И вы дали имя файла: «backup.sql». Поскольку вы не указали никакого пути, файл будет находиться в вашем текущем каталоге. Вероятно, это ваш домашний каталог, если вы не ввели cd ... в какой-то другой каталог.

В конкретном случае pg_dump вы также могли бы использовать альтернативу перенаправлению оболочки > /path/to/some_file, используя параметр -f some_file :

-f файл
--file = файл

Отправить вывод в указанный файл. Этот параметр может быть опущен для файловых форматов вывода, в этом случае используется стандартный вывод.

Таким образом, ваша команда могла бы быть pg_dump test -f backup.sql, запрашивающей pg_dump писать прямо в этот файл.

Но в любом случае вы даете имя файла, и если вы не указываете путь, файл создается в вашем текущем каталоге. Если ваша подсказка еще не отображает ваш текущий каталог, вы можете показать его с помощью команды pwd в Unix и cd в Windows.

2
mivk

Если вы не указываете полные пути, например: 

pg_dump your_db_name > dbdump

затем в Windows он сохраняет дампы в домашнем каталоге текущего пользователя. т.е .: 

C:\Users\username

2
WelcomeTo