2013-10-31 6 views
0

나는 csv 파일에서 정보를 구문 분석하고 SQL 문을 실행하여 테이블을 만들고 데이터를 삽입하는 스크립트를 가지고있다. 나는 ~ 25 GB csv 파일을 파싱해야하지만, 현재 스크립트로는 파싱 한 이전 크기의 파일로 판단 할 때 최대 20 일이 걸릴 것으로 예상됩니다. 내 스크립트를 최적화하여 더 빨리 실행하는 방법에 대한 제안 사항은 무엇입니까? 한 번만 호출된다는 사실 때문에 나는 createtable 함수를 생략했습니다. InsertRow()는 내가 실제로 더 빨리 만들 필요가 있다고 생각하는 함수입니다. 미리 감사드립니다.SQL을 실행하는 Python 스크립트 최적화

느린 속도는 insertRow()에서 데이터베이스에 연결할 때마다 발생해야 할 수 있습니까?

+0

: 나는 당신이 sqlite가에 CSV를 가져올 수 있다고 생각 제대로 –

+3

코드를 들여. http://www.sqlite.org/cvstrac/wiki?p=ImportingFiles – YXD

+0

아마 25GB의 데이터에 대해 sqlite가 아닌 데이터베이스를 사용하고 싶습니까? –

답변

1

1) Python, SQLLite, 25GB. 빠른 속도 = 환상적.

2) 삽입 =을 "(test9 값으로 INSERT"- 좋은 스타일 using parameters입니다 그것은 잘못된 해결책 : 그것과는 별도로

insert = "INSERT INTO test9 (field1, field2, field3) VALUES(?, ?, ?)" 
c.execute(insert, [value1, value2, value3]) 
1

데이터베이스에 연결하고 각 행에 커서를 생성하고 있습니다. 루프 밖으로이 단계를 이동하면 훨씬 빠릅니다.

또한 각 행을 커밋하고 있습니다. 만약 당신이 응용 프로그램의 논리에 맞는 것이라면 나는이 일이 일어나는 빈도를 줄이기를 제안합니다. 그러나 다른 극단에서는 25GB 파일 전체를 하나의 커밋으로 처리하는 것이 자신의 문제를 일으킬 수 있습니다.

관련 문제