총 게시물 38,648건, 최근 0 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기
[안드로이드]

sqlite 중복 방지 insert 구문 질문입니다.

글쓴이 : 숀화이트 날짜 : 2017-05-15 (월) 17:39 조회 : 1103
글주소 : http://www.androidside.com/B49/167237
 
  오라클자바교육 센터 구로본점
Ob-C, SDK, 하이브리드앱, 프로젝트진행, 27인치아이맥지원, 정부지원
www.oraclejava.co.kr
  알지오 SQLITE
IT전문교육 실무중심 SQLITE, 원격평생교육시설 정식인가.
www.alzio.co.kr/
  쇼핑의 모든 것, 옥션
올킬특가, 스마트배송, 10%쿠폰+제휴카드 15% 추가할인! 쇼핑이 생각날땐 옥션
www.auction.co.kr
신청하기


안드로이드, 자바 그리고 다양한 질문에 대해 성실히 답해드립니다. Q&A Jang

sqlite 에 multi insert 를 하는중에 중복된 키가 있으면 거르고자 합니다.
INSERT INTO temp (temp_id, create_date) VALUES (?,?)
현재 쿼리는 위와 같습니다. 
temp_id 로 중복값을 구분하고자 할떄 효율적인 방법이 어떤게 있나요 ?!
리플레이스 처럼 지우고 다시 인서트 하는 방식 말고 더 좋은 방법 없나요 ?!



질문자가 자신의 포인트 10 점을 걸었습니다.
답변하시면 포인트 2을, 답변이 채택되면 포인트 8을 드립니다.

질문답변 게시판에서 궁금한 사항을 해결하셨다면, 애써 답변해주신 분께 잘 되었다고 따뜻한 댓글 한마디 남겨주세요.
그리고 답변해주신 분의 글을 '추천' 해주세요.
추천받으신 분에게 1포인트가, 추천하신 분에게도 1포인트가 적립됩니다. ^^

허접샴푸 2017-05-15 (월) 17:46
UPDATE 문을 쓰셔야죠!
단순히 중복값을 확인하려면 INSERT 전에 SELECT count as를 쓰시던지 select * from ___ where temp_id= LIMIT 1
해서 개수를 구하시던지 해서 1이 나오면 이미 있다는 것이기 때문에 네.. 원하시는 대로 하시면 됩니다 ㅎ
댓글주소 추천 0 반대 0
     
     
숀화이트 2017-05-16 (화) 10:05
[@허접샴푸] multi insert 를 하고자 합니다. INSERT INTO temp (temp_id, create_date) VALUES (1,2017-05-17), (2,2017-05-17) 
이런 데이터가 한번에 499개 묶음으로 insert 하는데 temp_id 가 중복되는것을 건너띄고 싶은겁니다.
질문을 이해하기 쉽게 못한듯 하네요 죄송합니다. 가령 insert 해야 하는 데이터가 10만개라고 할때 
데이터 하나하나 select 해보고 insert 하게되면 엄청난 시간이 걸릴겁니다. 물론 10만개의 데이터를 넣을일은 없겠지만 천개만 해도 오래 걸릴듯 하네요 
댓글주소 추천 0 반대 0
          
          
허접샴푸 2017-05-16 (화) 10:25
[@숀화이트]
아하 그럼 not exist를 써보세요. 혹시 썼는데 문제가 있으신건가요?
댓글주소 추천 0 반대 0
뉴키 2017-05-15 (월) 18:37
그냥 거르시는게 목적이면(존재하면 입력값 무시. 업데이트X) unique key를 설정하시고 예외처리에서 아무 것도 안하시면 됩니다.

create table temp (_id  integer primary key autoincrement, temp_id text not null unique, create_date text);
댓글주소 추천 0 반대 0
     
     
숀화이트 2017-05-16 (화) 10:08
[@뉴키] multi insert 여서요 unique 를 걸어 버리면 하나라도 중복된 값이 있으면 그 쿼리 전체가 무시 되지 않나요?!
 데이터를 multi insert 로 넣으려고 합니다. 
댓글주소 추천 0 반대 0
          
          
뉴키 2017-05-16 (화) 13:19
[@숀화이트]
그럴땐 좋은 게 있죠.

INSERT IGNORE INTO temp (temp_id, create_date
VALUES ('1','2017-05-17'), ('2','2017-05-17')
댓글주소 추천 0 반대 0
OSKiller 2017-05-16 (화) 10:53
인서트 하기 전에 조회 하면 되지 않을까요?
select temp_id from table where in(xxx, xxx, xxx);
해서 중복된 검출 하고 
중복된 데이터는 update 문으로 적용 하면 될것 같은데요?
댓글주소 추천 0 반대 0
에찌 2017-05-19 (금) 10:59
인서트를 하기전에 묶음으로 된 데이터에서 중복처리를 미리하면될 것같은데여?
hashSet 이용해서 중복데이터 제거해도될듯합니다
http://log4dev.tistory.com/1

댓글주소 추천 0 반대 0
이전글  다음글  목록 글쓰기

 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기