DB에 Insert하려는 아이템이 상당히 많을 경우..
이를 한꺼번에 insert할 수 있는 쿼리문 없을까요..
검색해보니..
Insert into 테이블명 values(); Insert into 테이블명 values(); Insert into 테이블명 values();
이런식이나..
Insert into 테이블명 values(), (), ();
이런식으로 할수도 있다고 하던데.. SQLite는 이게 지원이 안되는거 같더군요..
Insert into 테이블명 values(), (), ();
이건 아예 구문 에러나고..
Insert into 테이블명 values(); Insert into 테이블명 values(); Insert into 테이블명 values();
이건 젤 마지막 아이템만 삽입이 되네요..
파일에서 내용을 불러와 DB에 삽입해야 하는데..
이게 만단위로 넘어가니 속도가 상당히 오래 걸리네요..
로그찍어보니 파일에서 불러오는 속도는 상관이 없는데.. DB삽입하는 시간이 오래걸립니다..
참고로 지금은 sql쿼리문을 ArrayList로 만들어두고 반복문 돌려서 하고 있구요..
public void execSQL(ArrayList<String> sqlList){
SQLiteDatabase db = openDB();
int listLength = sqlList.size();
for(int i=0; i<listLength; i++)
db.execSQL(sqlList.get(i));
db.close();
}
이런식으로 쓰고 있습니다.
좀더 빠르게 하는 방법 없을까요,,
트랜잭션 거는법..;;
db.beginTransction(); try { while(...){ insert(); } db.setTransctionSuccessful(); } catch (Exception e){ ... } finally { db.endTransction(); }
한꺼번에 많은 작업을 하실 때는 트랜젝션 걸어놓고 하세요
그리고 제가 아래 링크 걸어 드린 문서 살펴보시면 아시겠지만 한꺼번에 삽입이 되는걸로 나와 있습니다.
질문 내용을 미루어 보아 DEFAULT VALUES로 삽입해서 그런거 같네요 컬럼까지 같이 기입해 주시면 될겁니다.
http://sqlite.org/lang_insert.html
INSERT INTO [테이블명] (컬럼1, 컬럼2, ....) VALUES (내용1, 내용2, .... ), (내용1, 내용2, .... ), .....