Здравствуйте,
видел в FAQ (в пункте 4.3 ) подобный вопрос, но у меня , как мне кажется, все немного сложнее.
Нужно превратить varchar(2000) в blob. На сколько я знаю, в postgres большие объекты(blob) хранятся в специальной таблице, а собственно в таблице данных хранится лишь ссылка (oid).
Возможно ли такое преобразование средствами СУБД (может через временную колонку) ? Если да, то как мне это сделать?
Заранее благодарен за помощь всем откликнувшимся!
Не поручусь за
Не поручусь за точность, но я бы попробовал
1. Просто ALTER TABLE таблица ALTER COLUMN колонка TYPE ....
Если так не сработает, то
2.
CREATE TABLE tmp_tbl AS SELECT .... из первоначальной таблицы
далее
CREATE TABLE tmp1_tbl AS SELECT ... с JOIN'ом первоначальной таблицы и tmp_tbl и явным приведелением типа.
и далее переименовать tmp1_tbl в первоначальную таблицу
спасибо
спасибо большое за ответ, но вот собственно приведение типа и не работает.
Такое ощущение что нужно вначале создать large object из моих текстовых данных, и получить oid этого объекта, а затем уже вставить этот oid в мое старое поле вместо текстовых данных. Вероятно, нужно пользоваться дополнительными функциями создающими двоичный объект из данных другого поля. Может знает кто как это решить или сталкивался с подобным ?
Нет, мне
Нет, мне кажется, что вы не должны принимать во внимание внутрениий способ хранения в PostgreSQL. В конце концов - это внутреннее дело PostgreSQL. Если не работает приведение типа, посмотрите в руководстве функции преобразования строк в нужный вам тип и воспользуйтесь ими.
groovy-Скрипт
написать функцию на внутреннем языке postgres у меня не получилось, зато с помощью groovy и бат-файла получилось вот это извращенство) ну главное работает!
спасибо всем за помощь!