Имя: Пароль:
IT
Админ
Помогите скопировать базу PostgreSQL
0 AlexYurg
 
07.10.11
22:20
Знатоки PostgreSQL, помогите!
Пытаюсь целиком скопировать базу "DB1" в другую базу "DB2":

 pg_dump -Fc -b -f test.backup DB1
 pg_restore -d DB2 test.backup

pg_dump проходит нормально, а pg_restore ругается, сыпет ошибками,
что, мол, в базе это уже есть. Как ему объяснить, что я хочу просто
заменить содержимое второй базы на зеркальную копию первой?
1 Варвар
 
07.10.11
22:31
http://www.postgresql.org/docs/8.4/static/app-pgrestore.html
-c
--clean

Clean (drop) database objects before recreating them.
2 AlexYurg
 
07.10.11
22:36
(1) Точно! Спасибо! А я как-то прозевал этот ключик!
Чита-читал, блин...
3 AlexYurg
 
07.10.11
22:51
(1) Не помогло. Все равно ругается.
Может быть, надо сервер 1С предприятия останавливать перед рестором?
(Не хотелось бы, т.к. в других базах люди работают)
4 ilkoder
 
07.10.11
23:06
Не надо ничего останавливать, у нас каждый час дамп делается и никого не выкидываем. Только базу (в которую будешь копировать) лучше сначала создать пустую средствами 1с, потом в процессе востановления сначала пишет кучу ошибок - и пофигу на них, потом появляется в консоли сообщение - "create shema" - значит начала создаваться - вот после этого ошибок быть не должно. Постоянно так копию рабочей базы для экспериментов делаю.
5 AlexYurg
 
07.10.11
23:22
(4) Не хотелось бы создавать базу средствами 1С вручную,
мне нужно простое автоматическое копирование из bat-файла.
В этом случае ключа (1) достаточно?
6 ansh15
 
08.10.11
00:11
(0) DB2 удалите, создайте ее же заново, а потом pg_restore
7 ansh15
 
08.10.11
00:16
dropdb DB2
createdb DB2
pg_restore ...
8 AlexYurg
 
08.10.11
13:55
dropdb не проходит, говорит что в базе сидят два пользователя.
Хотя никто там не сидит, это точно, разве что сам сервер 1С...
Что с этим делать?
9 AlexYurg
 
08.10.11
14:37
Продолжение к (8)
Попробовал остановить сервер 1С - не помогло.
Все равно говорит, что база используется двумя другими сеансами.
10 ansh15
 
08.10.11
14:51
(9)В диспетчере задач, в процессах посмотрите зависшие процессы, ну и завершите их. Можно службу postgresql перезапустить, тогда они сам отвалятся.
11 AlexYurg
 
08.10.11
18:00
Всем спасибо, особенно, ansh15. Вроде разобрался.
pg_dump / dropdb / createdb / pg_restore - работает нормально.
Правда, pg_restore все равно ошибки выдает и возвращает errorlevel = 1.
12 pwei
 
08.10.11
19:00
я psql использую. на линуксе. не знаю, есть ли в винде.
13 AlexYurg
 
08.10.11
20:48
(12) psql в винде есть. Спасибо за идею. Попробую.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс