Create Table as Select 시 칼럼크기가 알아서 변경??? 0 3 2,511

by AquaMacker [Oracle 기초] [2009.12.28 11:09:24]


안녕하세요.

간만에 들렸습니다. ^^;

주인장님 그리고 오라클럽 여러분 새해 복 많이 받으시길 바랍니다.

더불어 하시는 게임 잘 되시고 좋은 아이템 마니마니 받으시길 기원합니다. ^^;;;

------------------------- 절 취 선 -----------------------------------------------------

개발서버에 있는 Table를 죄다 Create table as Select로 죄다 옮겼습니다.

그.러.나 !!!

시간이 없어서 못 보다가 지금에서야 보니까 칼럼이 2배가 되버렸네요 ㅠㅠ

varchar2(100 char) 형태가 varchar2(200 char)로 되버렸습니다 우째 이런일이 ㅡㅡ;;;

우선 이런일이 종종 발생하나요 ?

1. 원인은 어떤걸까요 ?

캐릭터셋이 안 맞는것도 원인일까요 ? 캐릭터셋이 걸리는데요..지금은 맞췄지만 옮길당시 안 맞추고 했던 기억이;;;

2. 조치방법

천상 테이블를 스크립트로해서 하나 맹글로 자료를 부울려고 합니다.

varchar는 문제가 되지 않지만 char가 문제가 되는데요...2char짜리를 1char로 할때는 일일히 

쿼리를 짜서 trim()을 해서 넣어야 되나요 ? MSSQL에서는 알아서 짤려서 들어갔던걸로 기억하고 있어서요;;;

아니면 예전에도 물어봤던걸로 기억하는데요..단순히 2char를 1char로 바꾸면 안되겠죠 ? ^^;;;
(이건 당연히 안될테고 ㅋ)

참 오라클 섬세하기 그지 없네요 ㅋ
역쉬 오라클 이네요 ㅋ

by 현 [2009.12.28 11:32:46]
CTAS의 단점이 바로 그런점...
즉, 컬럼단위의 자릿수나 제약조건 등이 원하는 대로 들어가지 않을 수 있다는 것입니다.

작업방식은,
1. 지금 그 테이블은 그대로 놔두시고,제대로 된 테이블을 만드십니다.
2. 지금 그 테이블에서 제대로된 테이블에 데이터를 옮깁니다. (INSERT ~ SELECT~)
(물론 TRIM등의 작업이 필요하겠지만, 에디터를 써서 하신다면 컬럼이 많아도 크게 어렵진 않을 듯 합니다.)
3. 데이터가 다 들어가면 인덱스, 권한, 시노님 등을 생성해 주십니다.
4. 기존에 있던 테이블을 DROP(혹시 불안하시면 RENAME)하시고 새로 만들어 놓은 테이블을 RENAME 합니다.
5. 인덱스 명 등 기타 제약조건에 명명규칙이 있다면 명명규칙에 맞게 변경하시면 됩니다.

=> 데이터량이 얼마나 될진 모르겠지만, 인덱스 없는 상태에서 밀어 넣는다면 그리 오래 걸리진 않을 듯 합니다.
백업은 필수이고, 작업은 비운영시간에 하셔야 하겠죠...
테이블 갯수가 많으면 약간의 노가다(?)를 하셔야 겠네요.

by 타락천사 [2009.12.28 15:00:24]
아마도, 양 디비의 캐릭터셋이 달라거 그랬을꺼에요
아래 링크 참조
http://cafe.naver.com/prodba/2014

by AquaMacker [2009.12.28 17:40:48]
답변 감솨요 ^^;
막판 노가다 예상 ㅠㅠ
내일 집에 갈 수 있으려나 ㅡㅜ
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입