XML 파일에서 많은 양의 데이터를 가져 와서 (50 만 개가 넘는) 서로에 대해 유효성을 검사해야합니다. 위치 데이터이므로 카운티, 거리 접두어, 거리 접미사, 거리 이름, 시작 집 번호, 끝 번호 등의 정보가 있습니다. 중복, 집 번호 중복 등이 있으며이 모든 데이터 (예 : 문제가있는 곳)에 대해보고해야합니다. 또한 xml 파일 내에 데이터 순서가 없으므로 각 레코드를 다른 모든 레코드와 비교해야합니다.Python에서 데이터를 살균하는 대규모 임시 데이터베이스
지금 나는 거리 이름 정보를 기반으로 한 위치 사전을 작성한 다음 집 번호 시작 및 끝 위치 목록을 저장하고 있습니다. 이 모든 작업이 끝나면 각 목록에서 중복 및 중복을 찾기 위해 만들어진 방대한 데이터 구조를 반복합니다. 나는 데이터 구조의 크기와 얼마나 많은 오류가 발생하는지에 문제가있다.
나에게 제안 된 한 가지 해결책은 파일에서 읽은 모든 데이터를 보관할 임시 SQLite DB를 만든 다음 DB를 실행하여 데이터와 관련된 모든 문제를 찾아서보고 한 다음 파기하는 것입니다 DB. 이 작업을 더 효율적으로 할 수있는 방법이 있습니까? 그리고이 문제에 접근하는 더 좋은 방법에 대한 제안?
fyi로서 내가 읽는 xml 파일은 500MB가 넘습니다 (이 거리 정보 이외의 다른 데이터를 저장합니다.하지만이 파일의 대부분은 파일 임). 파일 처리는 내가 아닌 곳입니다. 문제가 발생하면 파일에서 얻은 데이터 만 처리합니다.
EDIT : 나는 좀 더 자세하게 들어갈 수 있었지만, 데이터를위한 충분한 공간이 있다고 언급 한 포스터는 실제로 정확했다. 한 가지 경우에 나는 이것을 350 만 개의 레코드에 대해 실행해야했지만, 인스턴스 임시 데이터베이스를 만들어야했습니다.
파이썬 표준 라이브러리 bsddb 패키지 사용을 고려하십시오. 사전 인터페이스를 제공하지만 디스크의 해시 테이블 또는 b- 트리가 지원됩니다. –
2.6 이후로 더 이상 사용되지 않음 http://docs.python.org/library/bsddb.html –
OK, http://www.jcea.es/programacion/pybsddb.htm과 bsddb3 모듈을 사용하십시오 ... 같은 생각 , 약간 다른 이름. –