[oracle] 테이블 복사하기
테이블을 복사하는 방법.
아래예는 JWUSER 테이블에서 JWUSER_NEW로 복사한후
기존JWUSER는 JWUSER_OLD, 카피한 테이블 JWUSER_NEW는 다시 JWUSER로 바까치기하는 예임.
제품의 버전업시 테이블 데이터타입이 변경되었을시 깔끔하게 바꿔치기하는데 쓰임.
1. 테이블을 만듬
CREATE TABLE JWUSER_NEW
(
SEQ_USER NUMBER(19),
USERID VARCHAR2(60 BYTE),
USERDOMAIN VARCHAR2(100 BYTE),
....
....
....
CONSTRAINT JWUSER_NEW_PK PRIMARY KEY (seq_user)
);
2. 복사함. ( jwuser-> jwuser_new로 복사)
INSERT INTO jwuser_new(SEQ_USER, USERID, USERDOMAIN, ....) SELECT * FROM jwuser;
3. 기타부가적으로 변경 (테이블변경)
-- 기존JWUSER -> JWUSER_OLD 로 변경
ALTER TABLE JWUSER RENAME CONSTRAINT JWUSER_PK to JWUSER_OLD_PK;
ALTER TABLE JWUSER RENAME TO JWUSER_OLD;
-- 신규테이블 JWUSER_NEW -> JWUSER 로 변경
ALTER TABLE JWUSER_NEW RENAME CONSTRAINT JWUSER_NEW_PK to JWUSER_PK;
ALTER TABLE JWUSER_NEW RENAME TO JWUSER;
4. 부가잡다구리정보 : CONSTRAINT NAME 조회
SQL> SELECT TABLE_NAME, CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME IN('JWUSER');
TABLE_NAME CONSTRAINT_NAME
------------------------------ ------------------------------
JWUSER JWUSER_PK