powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как перенести BLOB поле в другой sbspace?
7 сообщений из 7, страница 1 из 1
Как перенести BLOB поле в другой sbspace?
    #37886946
victor16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникла необходимость переноса существующих BLOB-данных в другой sbspace. Похоже, штатного решения типа ALTER FRAGMENT INIT in <another_sbspace> для BLOB-полей не существует (надеюсь, пока).
Думаю использовать следующий метод:
1. Создать новое поле
Код: sql
1.
ALTER TABLE tabname ADD newcol BLOB PUT newcol IN (newsbspace)


2. Скопировать BLOB-данные, используя функцию LOCOPY
3. Дропнуть старое поле
3. Переименовать новое поле

Никто не смог бы ничего посоветовать по этому поводу?

С уважением
Виктор
...
Рейтинг: 0 / 0
Как перенести BLOB поле в другой sbspace?
    #37887120
яфшуеі
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не пробовал, но попробуй
ALTER TABLE tabname modify PUT col IN (newsbspace)
синтаксис вроде позволяет.
...
Рейтинг: 0 / 0
Как перенести BLOB поле в другой sbspace?
    #37887190
victor16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
яфшуеіне пробовал, но попробуй
ALTER TABLE tabname modify PUT col IN (newsbspace)
синтаксис вроде позволяет.

эта операция будет касаться только новых записей, старые останутся в старом sbspace
...
Рейтинг: 0 / 0
Как перенести BLOB поле в другой sbspace?
    #37887430
яфшуеі
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, действительно
этим, возможно, тоже можно воспользоваться как вариантом
1. alter table ...
2. "апдейт" таблицы
...
Рейтинг: 0 / 0
Как перенести BLOB поле в другой sbspace?
    #37890017
victor16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
яфшуеіда, действительно
этим, возможно, тоже можно воспользоваться как вариантом
1. alter table ...
2. "апдейт" таблицы
Простой апдейт не поможет. Он будет опять использовать старый sbspace. Нужно юзать именно функцию LOCOPY. Примерно так:
Код: sql
1.
insert into tabnew (blobvalnew) select locopy(blobvalold, 'tabnew', 'blobvalnew') from tabold;


Если опустить последние 2 параметра функции LOCOPY, то несмотря на то, что в описании новой таблицы конкретно стоит указание нового sbspace (..PUT .. IN (newsbspace)), создаваться он будет в старом sbspace, поскольку наследует характеристики той таблицы из которой он копируется!!! 2 последних параметра функции LOCOPY будут указывать новые характеристики вставляемого поля.
...
Рейтинг: 0 / 0
Как перенести BLOB поле в другой sbspace?
    #37890237
яфшуеі
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"апдейт" был взят в кавычки чтобы не писать delete/insert, т.е. это не оператор update.
но, судя по всему, вы уже проблему решили.
...
Рейтинг: 0 / 0
Как перенести BLOB поле в другой sbspace?
    #37891318
victor16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
яфшуеі"апдейт" был взят в кавычки чтобы не писать delete/insert, т.е. это не оператор update.
но, судя по всему, вы уже проблему решили.
да. решили, все оказалось гораздо проще :)
можно и прямым "апдейтом", правда, несколько видоизмененным:
Код: sql
1.
2.
ALTER TABLE tabname PUT blobval IN (newsbspace);
UPDATE tabname SET blobval = LOCOPY(blobval, 'tabname', 'blobval') WHERE 1=1;


Если блоб-данных очень много, "апдейтить" частями, что бы избежать длинной транзакции, особенно если sbspace создан с опцией Df=LOG
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как перенести BLOB поле в другой sbspace?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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