programing

Oracle: VARCHAR2 열을 CLOB로 변경

goodcopy 2023. 3. 19. 20:19
반응형

Oracle: VARCHAR2 열을 CLOB로 변경

varchar2(4000) 컬럼에 저장하려고 했던 데이터가 너무 커서 대량의 텍스트 데이터를 저장하기에 적합한 컬럼으로 변경하고 싶습니다.구체적으로는 시리얼화된 어레이입니다.

  1. 첫째, CLOB는 이 용도로 사용하는 데 가장 적합한 데이터 유형입니까?좀 더 적절한 데이터 타입이 있나요?

  2. 둘째, 일반적인 snyntax를 사용하여 열을 변경하려고 할 때:

    ALTER TABLE table MODIFY column CLOB
    

    다음 오류가 발생합니다.ORA-22858: 데이터 유형의 잘못된 변경

    데이터를 잃지 않고 이 표를 변경하는 가장 간단한 방법은 무엇입니까?

가장 간단한 방법은 이동의 조작이varchar에 열을 달다.CLOB허용되지 않습니다. 새 열을 만들고 이전 열에서 새 열로 데이터를 이동합니다.

ALTER TABLE some_table ADD (foo CLOB);
UPDATE some_table SET foo = old_column;
ALTER TABLE some_table DROP COLUMN old_column;
ALTER TABLE some_table RENAME COLUMN foo TO old_column;

VARCHAR2 열은 CLOB로 직접 변환할 수 없지만 다음 2단계로 변환할 수 있습니다.

  • 열 데이터 유형을 VARCHAR2에서 LONG으로 변환합니다.
  • 열 데이터 형식을 LONG에서 CLOB로 변환합니다.
ALTER TABLE table MODIFY column long;
ALTER TABLE table MODIFY column clob;

Oracle 11g의 경우:

ALTER TABLE table MODIFY column long;
ALTER TABLE table MODIFY column clob;

언급URL : https://stackoverflow.com/questions/13402510/oracle-changing-varchar2-column-to-clob

반응형