SSISO Community

시소당

[Oracle]테이블 바뀌치기 신공! DataBase

테이블의 column을 바꾸고 싶을때가 있다.

 

하지만 값이 들어가 있으면.. 바뀌지지가 않는 법.

 

이럴땐 어떻게 해야할까?

 

쉽게 생각 드는게  임시 테이블을 하나 만들고 기존 테이블을 임시 테이블로 옮겨 놓은 후

 

기존 테이블의 컬럼을 수정 하고(다시 만들어도 되고) 임시 테이블에 넣었던 값을 다시 기존 테이블로 옮기는 것이다.

 

해볼까나?

 

 상황

  - DWSanction의 컬럼 중 DraftDate 컬럼을 varchar (40)에서 Date로 바꾸고 싶다. 하지만 데이터 값이 들어 있어 바꾸기가 쉽지 않다. 어떻게 해야 할까?

 

위의 순서대로 한번 해결해보자.

 

1. 임시테이블 생성

CREATE TABLE DWSanction2
AS SELECT * FROM DWSanction

2. 기존 테이블 수정

ALTER TABLE DWSanction MODIFY ( DraftDate DATE);

(난 여기서 아예 기존 테이블을 삭제하고 컬럼형을 바꾸고 다시 만들었다.)

 

3. 기존 테이블에 임시테이블에 넣었던 것을 다시 붓는다.

INSERT INTO  DWSanction SELECT * FROM DWSanction2;

 

알고 있으면 유용하게 써먹을데가 있을 터.  기억해 두도록 하자.


818 view

4.0 stars