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.