|
Селективный рестор и схемы
|
|||
---|---|---|---|
#18+
Добрый день, коллеги! Посоветуйте, пожалуйста, как решить вот такую задачку: Делается дамп базы данных на одном сервере (PG9.6, Linux) вот так: pg_dump.exe -v --file=db1_dump.tar --format=t --no-tablespaces --no-owner --username=postgres --dbname=db1 --host=host1 Походу отмечу, что несмотря на ключ --no-owner в дампе присутствуют CREATE TABLE public. history (... Потом на другом сервере (PG9.6, Windows) я хочу восстановить одну (а в дальнейшем возможно и несколько таблиц) вот так pg_restore.exe -v --table= history --format=t --dbname=db2 --no-owner --host=host2 -U pilotDWH < db1_dump.tar написав при импорте --no-owner я надеялся, что импортёр проигнорирует указанного в дампе владельца и положит таблицу в ту схему (к примеру - schema1), владельцем которой является группа, в которую входит пользователь pilotDWH...однако и этого не произошло (( пробовал импортировать с ключом --role=pilotDWH_group_role - результат тот же: таблица упорно оказывается в схеме public. ...или я упорно не вижу, где я ошибаюсь (( Чего хотелось бы достичь: чтобы при импорте таблица оказалась в определённой схеме, скажем - schema1, а не в как на исходном сервере в public. Аналог REMAP_SCHEMA в утилите импорта impdp у Oracle. Сервер host1 - чужой, host2 - мой и в схеме public у меня ничего лишнего лежать не должно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 17:31 |
|
Селективный рестор и схемы
|
|||
---|---|---|---|
#18+
Mark V. Lobanov, ещё одна жертва оракула в отличии от оракула, в пж схема и овнер вещи разные. совсем. собственник задаётся как: (alter table .... SET owner ....) которое опускается при вашем способе опускания овнера. вам надо или выбрать дамп схемы, и в нем (дампе) вместо SET search_path TO bla,....; написать SET search_path TO new_bla,....; или например восстановить вашу схему в какую--нть базульку, переименовать схему, в требуемую вами и ещё раз снять дамп, с нужными именами или придумать по вкусу ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 18:00 |
|
Селективный рестор и схемы
|
|||
---|---|---|---|
#18+
qwwqMark V. Lobanov, ещё одна жертва оракула Ну чего сразу "жертва" ? Я бы ещё понял, если бы речь шла о FoxBase+ ... но не суть qwwqв отличии от оракула, в пж схема и овнер вещи разные. совсем. Это мне понятно. Мне нужно чтобы после импорта объект оказался в определённой схеме. Не найдя стандартного аналога REMAP_SCHEMA, я начал экспериментировать с владельцами. Я также понимаю, что есть ALTER TABLE table_name SET SCHEMA new_schema, который можно выполнить после импорта, но мне за один шаг хочется. Для того, чтобы иметь возможность восстанавливать отдельные таблицы, дамп сделан бинарный (tar), так что по нему не "походишь и поменяешь". [skip] qwwqили например восстановить вашу схему в какую--нть базульку, переименовать схему, в требуемую вами и ещё раз снять дамп, с нужными именами ну тогда уже проще делать set schema сразу после импорта ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 18:20 |
|
Селективный рестор и схемы
|
|||
---|---|---|---|
#18+
Mark V. LobanovПоходу отмечу, что несмотря на ключ --no-owner в дампе присутствуют CREATE TABLE public. history (... Поправлюсь, CREATE TABLE с указанием схемы нет, но есть DROP TABLE public. history; Однако, на резутат экспериментов это не влияет (( ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 18:29 |
|
Селективный рестор и схемы
|
|||
---|---|---|---|
#18+
Mark V. Lobanov, если я верно помню, вы можете ресторнуть ваш дамп в плоский файл. и выборочно тоже. могу врать а уж в плоском файле обредактироваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 19:01 |
|
Селективный рестор и схемы
|
|||
---|---|---|---|
#18+
Mark V. Lobanov, Посмотрите вывод команды `pg_restore -l db1_dump.tar`. Будет список объектов в дамп-файле, в комментариях будут даны пути к объектам. Также будет полезно посмотреть на вывод `pg_restore -s db1_dump.tar|less`, которая покажет вам то, как создаются объекты и как они потом “правятся” через ALTER-ы. В частности, через ALTER-ы меняются владельцы объектов. Во всех ваших примерах объекты имеют префикс в виде схемы, никаких владельцев тут нет. qwwq в данном случае прав — в PostgreSQL устройство схем отличается от такового в ORACLE. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2017, 19:02 |
|
Селективный рестор и схемы
|
|||
---|---|---|---|
#18+
Mark V. LobanovДелается дамп базы данных на одном сервере (PG9.6, Linux) вот так: pg_dump.exe -v --file=db1_dump.tar --format=t --no-tablespaces --no-owner --username=postgres --dbname=db1 --host=host1 Походу отмечу, что несмотря на ключ --no-owner в дампе присутствуют CREATE TABLE public. history (... Цитата из документации: автор Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
т.е. опция --no-owner при таком формате бесмысслена ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2017, 08:55 |
|
Селективный рестор и схемы
|
|||
---|---|---|---|
#18+
Коллеги, спасибо за участие! Может быть я в начале топика не слишком четко выразил то, что хотел сказать, а именно: 1) я хотел получить стандартный аналог оракловского REMAP_ SCHEMA при импорте (НЕ замену владельца!), т.е. в один этап 2) не ставлю под сомнение утверждение qwwq о том, что устройство схем PG отличается от такового в ORACLE 3) по совету vyegorov посмотрел вывод pg_restore -l ..., но мне это, к сожалению, не дало информации, как решить задачу 1) 4) совет qwwq про конвертацию дампа bin -> sql услышал, спасибо Итого: я правильно вас понял, что стандартного решения задачи 1) нет? Если таки да, то IMHO как наименее затратное решение: на первом этапе - импорт таблицы в public, на втором - ALTER TABLE table_name SET SCHEMA new_schema через psql Скажите своё мнение, пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2017, 09:12 |
|
Селективный рестор и схемы
|
|||
---|---|---|---|
#18+
Mark V. LobanovКоллеги, спасибо за участие! Может быть я в начале топика не слишком четко выразил то, что хотел сказать, а именно: 1) я хотел получить стандартный аналог оракловского REMAP_ SCHEMA при импорте (НЕ замену владельца!), т.е. в один этап 2) не ставлю под сомнение утверждение qwwq о том, что устройство схем PG отличается от такового в ORACLE 3) по совету vyegorov посмотрел вывод pg_restore -l ..., но мне это, к сожалению, не дало информации, как решить задачу 1) 4) совет qwwq про конвертацию дампа bin -> sql услышал, спасибо Итого: я правильно вас понял, что стандартного решения задачи 1) нет? Если таки да, то IMHO как наименее затратное решение: на первом этапе - импорт таблицы в public, на втором - ALTER TABLE table_name SET SCHEMA new_schema через psql Скажите своё мнение, пожалуйста. Да все верно. -- Maxim Boguk dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2017, 09:28 |
|
|
start [/forum/topic.php?fid=53&tid=1996410]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 18ms |
total: | 173ms |
0 / 0 |