컬럼 타입 변경 문의드립니다. 0 3 3,703

by 손님 [Oracle 기초] 컬럼 [2013.07.02 19:27:16]


안녕하세요~

한 DB에 NVARCHAR와 VARCHAR로 구성된 테이블이 있습니다.

VARCHAR로 구성된 테이블의 컬럼에 대해 NVARCHAR로 통일하려고 합니다.


그래서 가장 효율적인 방법론(?)에 대해 문의 드리고자 합니다.

제가 생각하는 방법은 VARCHAR의 각 컬럼을 ALTER를 통한 변경,

그리고 해당 테이블을 복사하고 원 테이블 드랍후 NVARCHAR로 생성 후 다시 복사, 인덱스 재생성입니다.

처음에 ALTER로 했더니,,, 컬럼 하나 수정하는데,,, 한시간이 걸리더라구요

데이터가 많으면 수백만건 보통 수만에서 수십만건입니다.

테이블 컬럼 타입  변경에 대한 고수님들의 조언 부탁드립니다.

by 손님 [2013.07.03 09:42:10]

오라클의 경우 데이타가 들어있는 컬럼의 형식(타입)은 변경할수 없다. 임시 컬럼을 생성하여 자료를 백업해 두었다가 복원하는 방법으로 적용한다.

-- 임시 컬럼 생성
alter table [Table_Name] add ( [Temporary_Column] varchar2(1) default 'N');


-- 임시 컬럼에 자료 백업
update [Table_Name]
set [Temporary_Column] = [To_Change_Column];


-- 원본 컬럼 삭제
alter table [Table_Name] drop column [To_Change_Column];


-- 원본 컬럼 다시 생성
alter table [Table_Name] add ( [To_Change_Column] varchar2(1) default 'N' );


-- 원본 컬럼 복원
update [Table_Name]
set [To_Change_Column] = [Temporary_Column];


-- 임시 컬럼 삭제
alter table [Table_Namedrop column [Temporary_Column];


by 손님 [2013.07.03 09:46:38]

위의 방법으로 했을때는 원래 있던 컬럼의 위치가 아니고 맨뒤로 옮겨질텐데
원래자리에 오게 할수는 없나요?

by 손님 [2013.07.03 09:57:08]
토드에서 컬럼 순서를 바꾸는 기능이 있지만 이조차도
원본 테이블 복사후 드랍하고 순서에 맞게 테이블 재생성하는거라서
토드를 사용하시든 드랍후 재생성하시든 같습니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입