Я хочу найти некоторые данные внутри дампа базы данных, но эти дампы используют двоично сжатый формат (заголовок PGDMP
).Как преобразовать двоичный pgdump (сжатый) в простой файл SQL?
Как их преобразовать в SQL без их восстановления?
Я хочу найти некоторые данные внутри дампа базы данных, но эти дампы используют двоично сжатый формат (заголовок PGDMP
).Как преобразовать двоичный pgdump (сжатый) в простой файл SQL?
Как их преобразовать в SQL без их восстановления?
pg_restore
при запуске без имени базы данных выводит текстовый отвал в стандартный вывод; вы можете отправить это в другом месте с помощью -f
или с перенаправлением ввода-вывода.
pg_restore -f mydatabase.sql mydatabase.dump
Самый быстрый метод, который я использовал не было:
pg_restore mybinaryfile.backup > mysqlfile.sql
Никаких особых флагов, так как pg_restore просто выплевывает на стандартный вывод.
Обратите внимание, что при запуске нескольких кластеров, команда восстановления может не понравиться версии по умолчанию ...
pg_restore: [архиватор] неподдерживаемая версия (1,12) в заголовке файла
В тот случай, вы должны указать версию, хост и порт, как в:
pg_restore --cluster 9.1/localhost:5433 -f db.sql db.pgsql
(., обратите внимание, что информация host:port
игнорируется с опцией -f)
порт (5433) можно определить с помощью команды pgsql
как в:
pgsql --port 5433 template1
Когда pgsql
подключается, пишет комментарий, такие как:
Psql (9.3.6, сервер 9.1.13)
Это значит, что вы используете pgsql 9.3.6, и этот порт 5433 ссылается на сервер 9.1.13.
Если вы не уверены, какие порты в настоящее время используются, вы можете использовать команду netstat
как в:
sudo netstat -a64np | grep LISTEN | grep postgres
sudo
требуется для -p
варианта, который печатает имя процесса. Это дает вам список портов (обычно TCP и UDP портов).
Наконец, в системе Debian/Ubuntu, вы можете получить список установленных кластеров с командой dpkg -l
как в:
dpkg -l '*postgres*'
список записей, которые начинаются с «II» (самый левый столбец) в настоящее время установлены. У вас, конечно же, есть похожие команды для других Unices, которые помогут вам определить установленные версии.
Когда я пытаюсь это сделать, я получаю 'pg_restore: входной файл [архиватор] не представляется допустимым архивом'. Я могу заверить вас, что свалки были сделаны с использованием той же версии postgresql 8.4.17. – sorin
Извините, я только что обнаружил, что парень, который сделал резервные копии, gzipped их после использования -Fc?! ...и просмотр mc показывал мне несжатый контент в файловом представлении ... – sorin
Это сработало, спасибо – Tom