Свойства глобальной базы данных, такие как OWNER и т. Д., Всегда указываются именами SCHEMA в выводе pg_dump.
Однако для неглобальных объектов базы данных, насколько мне известно, нет никакого способа получить имена SCHEMA
, добавленные ко всем объектам базы данных. Способ работы скрипта заключается в том, что он устанавливает SET search_path
перед всеми объектами базы данных, специфичными для схемы ..., что более эффективно и имеет тот же эффект.
В случае, если вы пытаетесь разобрать вывод pg_dump извлечь заданную строку SQL, которая работает независимо друг от друга, возможно, придется также разобрать ближайшую предшествующие SET search_path
линии и выполнить, что перед выполнением целевой линии (например, ALTER TYPE
) в имеют желаемый эффект.
Если вы пройдете через первые несколько строк дампа, вы увидите строки, такие как SET search_path = personal. Это должно гарантировать, что объекты прав будут выбраны. Может быть, вы хотели явно указать имя схемы по какой-то другой причине? – Jayadevan
Спасибо Jayadevan, но вы правы, что я хочу явно указать имя схемы. Я восстановил database.sql с таким же форматом (включая имя схемы) и хочу сделать резервную копию, как в том же формате. Есть ли другой способ? –