programing

oracle에서 열 varchar를 clob으로 변경하는 방법

showcode 2023. 3. 21. 22:42
반응형

oracle에서 열 varchar를 clob으로 변경하는 방법

Oracle DB에 varchar로 설계된 열 세부 정보가 있으며, 이 DB는 현재 고객을 위해 사용되고 있으며 일부 행에는 이미 데이터가 저장되어 있습니다.

이제 열 세부 정보를 Clob 열로 변경합니다.이것을 실현하는 현명한 방법은 무엇입니까?

(앞의 답변과 같이) 코드는 다음과 같습니다.

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;
  1. 테이블에 clob 열을 추가합니다.
  2. clob 열을 varchar 열의 값으로 업데이트
  3. drop varchar 컬럼
  4. clob 열의 이름을 varchar 열 이름으로 변경

그러나 이렇게 해도 칼럼의 위치가 유지되지는 않습니다.그러면 컬럼이 테이블 끝으로 이동합니다.따라서 열의 위치를 유지하고 싶다면 다음 단계를 따르십시오.

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;

이렇게 하면 데이터 유형을 변경한 후에도 열의 데이터 및 위치를 그대로 유지할 수 있습니다.예에 대한 자세한 내용은 다음 URL을 참조하십시오.http://www.oraclebin.com/2012/12/how-to-change-varchar2-to-clob-datatype.html

프로세스 중에 테이블 데이터에 액세스할 수 있어야 하는 경우DBMS_REDefinition 보기

asktom http://asktom.oracle.com/pls/asktom/f?p=100:11:0 에서 같은 질문을 참조하십시오.:::P11_QUESTION_ID:177003491686

언급URL : https://stackoverflow.com/questions/6839545/how-to-change-column-varchar-to-clob-in-oracle

반응형