insert into select 구문중 가공컬럼 추가하여 insert 0 10 3,147

by 강서꽃미남 [SQL Query] [2014.07.02 21:34:48]


안녕하세요. insert into 구문을 사용하다가 질문드립니다..

얼른 걸어 놓고 퇴근하려는데 잘 안되네요.

디비는 현재 mysql로 보심되구요.

말그대로, insert into [TARGET_TABLE] select [ASIS_TABLE] 인데요, TARGET 쪽 컬럼이 하나 추가되어 있습니다.

TIMESTAMP 형태를 '20140101' 형태로 잘라서 넣으려고 합니다. 파티션 테이블이라 현재 INT형이구요

SELECT 절에  SELECT substr(CAST(VI_DATE),1,8) FROM TT), (다음컬럼들)라고 하면 서브쿼리에 갯수가 많이 나온다는 에러가 발생하구요,

이렇게 가공하여 컬럼 들어갈 경우는 어떻게 해야 하나요?

LIMIT 1로는 정상적으로 들어가는 건 확인했는데, 몇백만건이라서요.

조언부탁드립니다.

 

by 강서꽃미남 [2014.07.02 21:39:37]

SELECT substr(CAST(VI_DATE),1,8) 라 사용하면 1030 에러가 발생합니다. (Got error -1 from storage engine) 둘다 같은 엔진인데요..


by 시골간아찌 [2014.07.02 21:43:50]

다 밀어넣고 추가된건 업데이트하면 넘 느릴려나..


by 강서꽃미남 [2014.07.02 21:50:59]

마리아는 pk컬럼이 파티션 키에 포함되어 있지 않으면, 파티션테이블이 안만들어지더라구요.

 

그래서 쓰잘뗴기 없는거 그냥 짤라서 넣으려고하는데.. 안되네요.. 

 


by 시골간아찌 [2014.07.02 22:06:52]

mysql은 잘모르긴하는데

(select substr(CAST(VI_DATE),1,8) from dual ) 랑 CROSS JOIN 해서 쓰면 안되나??


by 강서꽃미남 [2014.07.02 22:42:41]

테이블 두개는 SELECT substr(CAST(VV_DATE as UNSIGNED),1,8) ,

로 해결봤구요 두개는 뭐엔진에러가 나서 다시 마이그하고 있어요.


by 강서꽃미남 [2014.07.03 02:50:57]

이제 얼추... 저 구문 써서 넣는건 맞구요.

자세한 사유는 모르겠으나, PK가 없던 테이블에서 PK 있는 테이블로 밀어넣을때, 

그 to -be table pk 가 그 가공컬럼일때, 안들어가요.. 

근데 멀티로 pk(to be 가공컬럼, 기존컬럼) 잡으면 또 들어갑니다...

에러는 : mysql got error 1 from storage engine 입니다.. 혹시나 참조하세요 필요한 분들.


by 마농 [2014.07.03 08:20:48]

글쎄...

내 생각에는 dbms 를 떠나서 아주 기본적인 것을 지키지 않아 발생한 에러로 보이는데...

아주 특이한 에러는 아니네...

하나는 그냥 함수 쓰면 될걸 스칼라 서브쿼리로 바꾸면서 에러난것이고

또 하나는 PK 에 중복이 있어서 에러난것일 뿐이고.


by 강서꽃미남 [2014.07.03 09:34:25]

네.. 그런데 뭐를 잘못 한건지.. 기본적으로 같은 함수 써서 서브쿼리로 말고 잘라서 넣었을 경우

pk잡았을 경우는 안들어가지고, pk를 없앴을 경우는 들어가지더라구요..ㅠㅠ


by 마농 [2014.07.03 10:33:48]

음... 이 시점에 뭘 잘못한건지 모르면 안되는데 ㅡ,.ㅡ

PK 항목에 중복값을 넣은 것이 잘못인데...

1. 입력값이 잘못인 경우

  => 중복되지 않은 값을 입력하도록 쿼리를 변경해야 하고

2. 입력값엔 문제가 없는 경우
  => 이 경우는 PK 를 잘못 설정한 듯 하고


by 강서꽃미남 [2014.07.03 10:45:21]

회사에 출근해서 여쭤보고 데이터 까봤더니, 말씀하신대로 중복된 값들때문에 그런거네요.

데이터가 워낙 많아서 유니크한 pk컬럼을 찾기 어려웠었는데, 윗분이 말씀해주시고 하니까 이해가 갑니다. 어젠 시간에 쫓겨 먼저 table create만 했었는데, 다시 한번 테스트 해볼게요.

감사합니다. ^^ 주말에 오시면 얼굴뵈요~!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입