Как поменять столбец varchar на clob в oracle - PullRequest
24 голосов
/ 27 июля 2011

У меня есть столбец подробности , разработанный как varchar в oracle DB, сейчас эта база данных используется для клиентов, и в некоторых строках уже хранятся данные.

Теперь я хочу изменить столбец детали к столбцу Clob.Какой умный способ сделать это?

Ответы [ 4 ]

66 голосов
/ 27 июля 2011

(как в предыдущем ответе) и вот код:

ALTER TABLE atable
 ADD (tmpdetails  CLOB);

UPDATE atable SET tmpdetails=details;
COMMIT;

ALTER TABLE atable DROP COLUMN details;

ALTER TABLE atable
RENAME COLUMN tmpdetails TO details;
11 голосов
/ 27 июля 2011
  1. Добавление столбца clob в таблицу
  2. обновление столбца clob со значениями из столбца varchar
  3. удаление столбца varchar
  4. переименование столбца clob в имя столбцов varchar
9 голосов
/ 25 января 2013

Но это не будет поддерживать положение вашей колонки.Это переместит ваш столбец в конец таблицы.Поэтому, если вы хотите сохранить положение своей колонки, выполните следующие действия.

alter table atable add (tempdetails varchar2(4000));
update atable set tempdetails = details;
update atable set details = null;  -- this is necessary to change data type
alter table atable modify details long;  -- this is required because you can not change directly to clob.
alter table atable modify details clob;
update atable set details=tempdetails;
alter table atable drop column tempdetails;

Это способ сохранить данные и положение столбца в неизменном виде даже после изменения типа данных.Подробную информацию с примером смотрите здесь: http://www.oraclebin.com/2012/12/how-to-change-varchar2-to-clob-datatype.html

1 голос
/ 21 марта 2012

, если вам нужно, чтобы данные таблицы были доступны во время процесса .. посмотрите на Dbms_redefinition

см. Аналогичный вопрос на аськтом http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1770086700346491686

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...