PK컬럼을 10개에서 5개로 줄이는 방법에 대한 질문입니다.(중복데이터 제거 방법) 0 2 2,792

by 장범진 PK import 중복데이터 [2013.04.12 10:07:21]


안녕하세요.
완전 초보중의 초보인 DB개발자 입니다.
답을 찾다 찾다 포기하고 너무 답답해여 이렇게 질문글을 남깁니다.


거두절미하고 바로 질문드리겠습니다.


현재 PK가 10개 컬럼으로 잡혀있습니다. PK에 대한 기본개념이 없을때 저지른짓이라,,,

이제 이것을 5개 컬럼으로 줄여야 하는데, 그 방법에 대한 질문입니다.


기존의 PK가 10개 컬럼이니 필터링없이 중복데이터가 막 들어와버려

단순히 기존PK를 지우고 5컬럼으로 설정하면 무결성제약조건 에러가 나옵니다.(당연한 얘기지만..)


어떤 방법으로 중복데이터를 다 지우고 새로 PK를 적용할 수 있을까 고민하다가

export한뒤 import하면 중복 데이터가 짤려 나가지 않을까 생각이 들어 실행에 옴겨봤습니다.

기존 테이블A를 export한뒤 A테이블을  A_before로 이름을 바꾸고

다시 똑같은 구조에 PK는 5컬럼으로 줄인 A테이블을 다시 만들었습니다.


그리고 import를 했더니 무수한 ora-00001, 무결성에러가 나오면서 중복데이터는 다 짤려나가고 아닌것들만 import되더라구요.

뭐 PK를 줄이는데 성공하긴 했는데,,, 문제는 이부분입니다.

중복데이터가 다 짤려나가고 아닌것들만 import되는것은 좋은데....시간, 시간이 너무....오래걸립니다.

무수한 무결성에러가 다 끝나야 import완료 메시지가 나오는데 그때까지 걸리는 시간이 2~3일은 족히 걸리더라구요..(데이터가 1000만건 정도일때)


- 무결성에러만 표시되지 않는다면 금방 될것 같은데, import할때 에러메시지가  표시되지 않게 하는 방법이 있는지요?

- pk를 재설정하는데 제가 생각하기에도 export/import는 너무 무식한 방법같습니다. 더 빠르고 간단한 방법이 있는지 알고싶습니다.


긴 글 읽어 주셔서 감사합니다.

by 마농 [2013.04.12 10:15:18]

어떤 자료를 살리고, 어떤 자료를 삭제할지 결정하는 기준이 있어야지요.
그냥 중복된다고 다 삭제한다면 중요자료가 삭제되고 안중요한 자료가 남을 수도 있겠지요.
기준을 우선 정하시고
그 기준에 따라 중복제거 SELECT 쿼리를 만들고
CTAS(Create Table As Select) 방식으로 테이블을 만드시면 됩니다.
후에 원본 테이블 을 백업테이블로 리네임
복구테이블을 원본테이블로 리네임
pk, 인덱스, 제약조건등 설정


by 장범진 [2013.04.12 17:59:35]
감사합니다. 그냥 테이블 복사만 알았지 응용하는것을 생각못했었네요! 감사합니다!
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입