web-dev-qa-db-fra.com

Comment changer la colonne varchar en clob dans oracle

J'ai une colonne détails conçue comme varchar dans Oracle DB, cette base de données est maintenant utilisée pour les clients et certaines lignes ont déjà des données stockées.

Maintenant, je veux changer la colonne détails en une colonne Clob. Quelle est une façon intelligente d'accomplir cela?

28
Whtisop

(comme la réponse précédente) et voici le code:

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;
69
Kevin Burton
  1. Ajouter une colonne Clob au tableau
  2. mettre à jour la colonne clob avec les valeurs de la colonne varchar
  3. supprimer la colonne varchar
  4. renommer la colonne clob en nom de colonnes varchar
11
Rene

Mais cela ne maintiendra pas la position de votre colonne. Il déplacera votre colonne à la fin du tableau. Donc, si vous souhaitez conserver la position de votre colonne, suivez également ces étapes.

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;

C'est de cette manière que vous conserverez les données et la position de votre colonne intactes même après avoir changé le type de données. Pour des informations détaillées avec un exemple, voir ici: http://www.oraclebin.com/2012/12/how-to-change-varchar2-to-clob-datatype.html

10
Sushant Butta

si vous avez besoin que vos données de table soient accessibles pendant le processus. regardez DBMS_REDEFINITION

voir une question similaire sur asktom http://asktom.Oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1770086700346491686

1
ShoeLace