Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Need help / 7 сообщений из 7, страница 1 из 1
29.04.2008, 18:33
    #35286915
ananas2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Need help
Добрый день!

Необходимо выполнить:

UPDATE table1
SET col3 = col3 || '0'
WHERE col2=0 and LENGTH(col3)=5;

UPDATE table1
SET col3 = col3 || '00'
WHERE col2=0 and LENGTH(col3)=4;

Но в таблице слишком много записей => будет переполнение лога транзакций... Как можно переделать, чтоб достичь такого же результата без переполнения лога? Экспорт-импорт или как еще, если можно подробнее...


Заранее пасиба!
...
Рейтинг: 0 / 0
29.04.2008, 19:10
    #35286992
ananas2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Need help
Кажись разобрался:

EXPORT TO 'file.del' OF DEL
SELECT col1, col2,
CASE
WHEN
LENGTH(col3)=5 AND col2=0
THEN col3 || '0'
WHEN
LENGTH(col3)=4 AND col2=0
THEN col3 || '00'
ELSE
col3 END AS col3
FROM REACT.REPAIR_DISPATCH;
...
Рейтинг: 0 / 0
29.04.2008, 22:30
    #35287248
Hunterik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Need help
Есть замечательная вещь ALTER TABLE ... ACTIVATE NOT LOGGED INITIALLY , которая много раз вспоминалась на форуме, когда вопрос заходил об отключении логирования операций...

Об использовании - DB2 Information Center .
Поиск по alter table ...
Хотя тут и есть пара тонкостей...
...
Рейтинг: 0 / 0
30.04.2008, 12:29
    #35288253
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Need help
может проще - написать хранимку. В хранимке открыть курсор с WITH HOLD. Потом бежать по всей таблице апдейтить, а коммит делать например через каждую 1000 записей.
...
Рейтинг: 0 / 0
30.04.2008, 12:30
    #35288257
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Need help
gardenmanможет проще - написать хранимку. В хранимке открыть курсор с WITH HOLD. Потом бежать по всей таблице апдейтить, а коммит делать например через каждую 1000 записей.
Да и еще, курсор окрывать как OPTIMIZE FOR 1000 ROWS :)
...
Рейтинг: 0 / 0
30.04.2008, 21:13
    #35289623
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Need help
HunterikЕсть замечательная вещь ALTER TABLE ... ACTIVATE NOT LOGGED INITIALLY , которая много раз вспоминалась на форуме, когда вопрос заходил об отключении логирования операций...

Об использовании - DB2 Information Center .
Поиск по alter table ...
Хотя тут и есть пара тонкостей...

Да, пара тонкостей ;-). Имеет смысл пару раз забекапить базу или хотя бы таблицу - до операции и после. А то, если по какой-то причине таблица попортится, данные тю-тю. А если по какой-то причине произойдёт rollback, таблица обязательно попортится, и (если не восстанавливать базу из бекапа) её придётся заново создавать (и прочие объекты (вроде view), которые от неё зависят), заливать данные, раздавать права, и т.д., и т.п.

Ну, и не забывать, что после commit логгинг включится обратно, а по умолчанию в CLP автокоммит ;-)
...
Рейтинг: 0 / 0
04.05.2008, 16:10
    #35292507
ananas2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Need help
gardenman gardenmanможет проще - написать хранимку. В хранимке открыть курсор с WITH HOLD. Потом бежать по всей таблице апдейтить, а коммит делать например через каждую 1000 записей.
Да и еще, курсор окрывать как OPTIMIZE FOR 1000 ROWS :)

Пасиба, вариант интересный, а чем импорт с автокоммитом плох?

ALTER TABLE ... ACTIVATE NOT LOGGED INITIALLY - такие вещи мне на данной базе делать низя, да и объем данных не такой большой...

Всем пасиба за помощь...
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Need help / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]