2011-11-02 2 views
0

대용량 CSV를 구문 분석 할 때 db.transaction에서 INSERT의 비동기 호출에 문제가 있습니다.WebSQL : 많은 행/트랜잭션 INSERT

문제 # 1 :

:

while(...parse CSV...) { 
db.transaction{ 
...tx.executeSql(INSERT... 
} 
} 

...은 마지막 행의 X 배 (X ... CSV의 행 번호)

문제 # 2를 입력합니다

db.transaction{ while(...parse CSV...) { ...tx.executeSql(INSERT... } } 

... 일부 제한에 도달하며 아무 것도 삽입하지 않습니다. (사용하지 않는 경우에는 < 10, 작동하지만이 한도는 매우 작음).

이 질문과 유사합니다 : Web SQL Database + Javascript loop,하지만 재귀 여기 도움이되지 않습니다.

감사합니다.

+0

예제 1은 while 루프 내에서 여러 트랜잭션을 비동기 적으로 생성하기 때문에 작동하지 않습니다. Example # 2는 더 나은데, 왜냐하면 많은 트랜잭션 대신에 1 개의 트랜잭션을 수행하고 단일 트랜잭션 내에서 루핑을 수행하기 때문입니다. 그러나 예제 # 2에 대한 실제 코드를 추가하여 제한이 부과되는 이유를 시도해 볼 수 있습니다. :) –

답변

0

나는 해결책을 찾았습니다. 이 두 가지를 나누는 것이 더 좋습니다. CSV를 구문 분석 한 다음 saveOneRow (column1, column2 ...)와 같은 함수를이 함수의 트랜잭션과 함께 호출합니다.