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?
(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;
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
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