Есть бекап базы сделаный с ключом -b. Смотрю pg_restore.exe -l бекап:
5599; 0 0 BLOBS - BLOBS
5600; 0 0 BLOB COMMENTS - BLOB COMMENTS
Не смотря на это при выполнении pg_restore -d бекап pg_largeobject восстанавливается. Но вопрос в другом: так как восстанавливаю из бекапа базу по частям - сначала данные одной схемы потом данные другой схемы и так далее - как восстановить в продолжение этой последовательности из этого же бекапа и pg_largeobject?
Комментарии
Пояснения
Делаю pg_dump -Fc -b ...
Восстанавливаю pg_restore.exe -h localhost -p 5432 -U postgres -Fc -v -- data-only --table=pg_largeobject --disable-triggers... - никак
Подскажите
указать схему: -n pg_catalog
nikos, вы забываете указать схему: -n pg_catalog, ведь pg_largeobject находится именно в этой схеме.
выполняю
выполняю следующую последовательность:
1 создаю новую базу
2 pg_restore.exe -i -h localhost -p 5432 -U postgres --schema-only --disable-triggers -d "dbname" "dbname.backup"
3 pg_restore.exe -i -h localhost -p 5432 -U postgres --data-only --schema=pg_catalog --disable-triggers -d "dbname" "dbname.backup"
4 pg_restore.exe -i -h localhost -p 5432 -U postgres --data-only --schema=schema_1 --disable-triggers -d "dbname" "dbname.backup"
5 pg_restore.exe -i -h localhost -p 5432 -U postgres --data-only --schema=schema_2 --disable-triggers -d "dbname" "dbname.backup"
pg_largeobject пусты. Что не так?
Если ещё актуально
Я делал так. Создал командный файл для бэкапа со следующим содержимым:
"../pg_dump.exe" -h localhost -p 5434 -U postgres -f file_name.backup -F c -i -v --compress=9 -C -E koi8 -n schema_name db_name
"../pg_dump.exe" -h localhost -p 5434 -U postgres -f file_name_files.backup -F c -i -v --compress=9 -E koi8 -n pg_catalog -t pg_largeobject -o -a db_name
и файл для восстановления:
pg_restore.exe -h localhost -p 5434 -U postgres -d db_name -i -v "file_name.backup"
pg_restore.exe -h localhost -p 5434 -U postgres -d db_name -i -v "file_name_files.backup"
и это успешно работает. Здесь schema_name - имя схемы (поскольку я создал специально отдельную для своих данных), db_name - имя базы данных, file_name.backup - имя файла для бэкапа данных, file_name_files.backup - имя файла для бэкапа large_object (т.е. файлов в базе). При этом указал для бэкапа файлов опцию "-о" (with oids), т.к. без неё oids у файлов создавались при восстановлении новые и естественно отличались от значений в таблицах с данными.
Вот и всё. Надеюсь кому-нибудь это поможет.