안녕하세요^^
주말은 잘 보내셨는지요..
다름이 아니라 앱 개발을 하는데요 대용량 DB를 INSERT 해야 하는 부분이 생겨서 질문드립니다...
현재 앱을 실행 할경우 XML 데이터를 대용량으로 받아서 INSERT를 처리해야하는데요..
일단 파싱 속도는 개선을 한 상태라 괜찮은데요.. INSERT가 1분이상 걸리더라구요..
데이터는 900개 정도인데 이걸 3번을 각각 다른 TABLE에 이동 해야하는 상황인데...
확인 해보니까 SQLITE에서는 insert 내용; insert 내용; 이런식으로 묶어서 연달아 어러 값을 한꺼번에 저장할 수있는데요
실질상 안드로이드 개발단에서는 내용을 묶어서 저장 시킬려고 했더니 연달아 넣어도 첫번째 값만 등록이 되더라구요...
INSERT INTO MYTABLE (id, name) VALUES (101, '123');INSERT INTO MYTABLE (id, name) VALUES (101, '); 이런식으로 묶어서 SQLITE 자체 에서는 사용이 가능합니다.. 실질적으로 안드로이드 소스에서 저렇게 처리하려고 했더니 앞에꺼 하나만 등록이 되네요..
그리고 이건지금 돌아가고 있는 INSERT 구문인데요.. 이걸 900개의 데이터와 각기 다른 테이블에 3번을 INSERT 시키니까 너무 느리네요... 대용량으로 한방에 처리하는 방법은 없을까요... public long insertZRELATION(String tableName,String ID,String couponID,String shopID){ ContentValues values = new ContentValues(); long result = 0; db.beginTransaction(); try{ if(tableName.equals("ZRELATION")){ values.put("ZID", ID); values.put("ZCOUPONID", couponID); values.put("ZSHOPID", shopID); } result = db.insert(tableName, null, values); db.setTransactionSuccessful(); }catch (Exception e) { // TODO: handle exception }finally{ db.endTransaction(); } return result; }
음... 조인으로는 아무래도 테이블 속성들이 틀려서 힘들것 같은데요 ㅜㅜ
일단은 참고해서 작업해보겠습니다^^
근데. .제가원하는 값은
문자열에 몽땅 insert구문을 묶어서 한꺼번에 처리하고 싶은데요
execSQL 요놈 자체가 ; 을 구분해서 하나만 넣어주는것 같더라구요... 전부다가 아니라...ㅜㅜㅜ
String SQL = "INSERT INTO ZMYVALUE ('ZVALUE','ZFIELD') VALUES ('1','2');,INSERT INTO ZMYVALUE ('ZVALUE','ZFIELD') VALUES ('1','2');INSERT INTO ZMYVALUE ('ZVALUE','ZFIELD') VALUES ('1','2');INSERT INTO ZMYVALUE ('ZVALUE','ZFIELD') VALUES ('1','2');INSERT INTO ZMYVALUE ('ZVALUE','ZFIELD') VALUES ('1','2');INSERT INTO ZMYVALUE ('ZVALUE','ZFIELD') VALUES ('1','2');INSERT INTO ZMYVALUE ('ZVALUE','ZFIELD') VALUES ('1','2');INSERT INTO ZMYVALUE ('ZVALUE','ZFIELD') VALUES ('1','2');INSERT INTO ZMYVALUE ('ZVALUE','ZFIELD') VALUES ('1','2');INSERT INTO ZMYVALUE ('ZVALUE','ZFIELD') VALUES ('1','2');INSERT INTO ZMYVALUE ('ZVALUE','ZFIELD') VALUES ('1','2');";
db.execSQL(SQL);
확신은 없지만 조심스레 의견을 제시해 봅니다.
혹시 테이블 join 을 이용하면 되지 않을까요?
join 으로 해결하시게 되면 답글 부탁드립니다. 저두 공부중이라 정확한 대답을 못드려 죄송합니다. ^^;;