Преобразование дампа PostgreSQL SQL в дамп нестандартного формата PostgreSQL

Мой вариант использования следующий:

  • У меня есть дампы PostgreSQL, созданные с помощью pg_dump -F p (текстовый файл сценария SQL), и я не могу контролировать, как они создаются.
  • Мне нравится гибкость pg_restore (--no-owner, --data-only, --clean и т. д.)

Я знаю, что должен использовать psql с дампами SQL в виде простого текста, но есть ли способ преобразовать дамп SQL в дамп нестандартного формата PostgreSQL, чтобы я мог использовать pg_restore, или какой-то способ получить все его параметры?

Спасибо за внимание.

Нет, конвертировать нельзя. Единственный способ создать дамп в произвольном формате - использовать pg_dump -F c.

a_horse_with_no_name 03.09.2018 16:00

Я стою рядом с мистером Конем без имени, вы действительно не можете этого сделать, за исключением, очевидно, дампов.

Thomas J. 03.09.2018 16:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
3 173
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как упоминалось в других ответах / комментариях, вы не можете напрямую преобразовать его. Что вам нужно сделать, так это создать временную базу данных из файла резервной копии sql и использовать pg_dump, чтобы создать из нее собственный формат.

Убедитесь, что резервная копия sql не является «чистым» файлом восстановления, т. Е. Не удаляет базу данных в верхней части файла. Если это так, удалите "DROP DATABASE dbase" ..

Создайте временную базу данных:

psql
CREATE DATABASE mytempdb;
\q

Затем восстановите резервную копию, которая у вас есть:

psql mytempdb < my_database_backup.sql

Примечание. Вот почему вам НЕ нужна строка «drop database ...» в верхней части файла sql. Вместо этого будет удалена ваша исходная база данных.

Выгрузите его как произвольный формат:

pg_dump mytempdb -Fc -f custom_format.dump

Когда вы закончите, было бы хорошо удалить эту временную базу данных: psql --command = "DROP DATABASE mytempdb;"

bitinerant 03.10.2020 01:06

Другие вопросы по теме