postgresql, куда идет вывод дампа pg

Я пытаюсь создать резервную копию БД postgresql, и я хочу использовать

4 ответов


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

пример

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

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


в моей ситуации (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 dists, 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, в зависимости от конкретного dist вы работаете


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

pg_dump your_db_name > dbdump

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

C:\Users\username


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

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

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

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

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


--file=file

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

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

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