2
distance
및 vertices
테이블을 포함하는 여러 테이블이있는 sqlite 데이터베이스 (11GB)가 있습니다. distance
테이블은 꽤 크고 (120mio 행), vertices
은 더 작습니다 (15,000 행). 나는 의 한 칼럼을 vertices
의 다른 칼럼의 값으로 업데이트하기 위해 파이썬에서 sqlite3을 사용하고자한다. 테이블 정점에는 cat
열에 인덱스가 있고 orig_cat
에 다른 인덱스가 있습니다. 내가 뭐하는 거지청크로 큰 sqlite 데이터베이스 업데이트
:
import sqlite3
db_path='path/to/db.db'
conn = sqlite3.connect(db_path)
cur = conn.cursor()
cur.execute('''UPDATE distance SET
from_orig_v = (SELECT orig_cat FROM vertices WHERE cat=distance.source)''')
그러나 이러한 큰 데이터베이스에서 해당 업데이트 문을 실행은 메모리 오류가 발생합니다. 충돌 할 때까지 메모리 사용이 꾸준히 증가하고 있습니다. 메모리가 부족하지 않은 상태로 이러한 큰 업데이트 문을 수행하라는 조언을 찾고 있습니까? 아마도 청크 (즉,
distance
테이블의 행)에서 업데이트를 처리하고 예를 들어 다음을 수행 할 수 있습니다. 메모리를 확보하기 위해 1000 번의 업데이트가 필요하십니까? 어떻게 그 파이썬/sqlite에서 할 것이라고?
비슷한 문제에 대한 해결책. 큰 데이터베이스를 업데이트 할 때 SQLite3이 충돌하는 이유에 대한 아이디어가 있습니까? –