얘들 아,이게 내 첫 번째 질문이야. 나는 SQL에서 UniprotKB의 로컬 복사본을 만들려고합니다.대용량 XML 파일을 스크립트로 분석하거나 BioPython API를 사용 하시겠습니까?
UniprotKB은 2.1GB이며,이 XML로 제공하고 SWISSPROT
사용하는 특별한 텍스트 형식 여기 내 옵션입니다
1) SAX 파서 (XML을 사용)를 - 나는 루비를 선택했다 및 Nokogiri. 파서를 작성하기 시작했지만 초기 반응 : XML 스키마를 SAX 파서에 어떻게 매핑합니까?
2) BioPython - BioSQL/Biopython이 이미 설치되어있어 필자의 SQL 스키마를 그대로 만들었고, 성공적으로 하나의 SwissProt/Uniprot txt 파일을 데이터베이스에 삽입 할 수있었습니다.
전 2.1gb에서 바로 실행하고 있습니다 (손가락을 엇갈립니다). 여기에 내가 실행 해요 코드는 다음과 같습니다
from Bio import SeqIO
from BioSQL import BioSeqDatabase
from Bio import SwissProt
server = BioSeqDatabase.open_database(driver = "MySQLdb", user = "root", passwd = "", host="localhost", db = "bioseqdb")
db = server["uniprot"]
iterator = SeqIO.parse(open("/path/to/uniprot_sprot.dat", "r"), "swiss")
db.load(iterator)
server.commit()
편집 : 그것은 (테이블이 이노 디비 때문에) 트랜잭션이 잠겨지고 있기 때문에 지금은 충돌의 오류 번호 : 1205 잠금 대기 제한 시간을 초과; 트랜잭션을 다시 시작하십시오. 내가 사용하고있다 MySQL 버전 : 5.1.43
PostgreSQL로 데이터베이스를 전환해야합니까?
여기에 귀하의 질문은 무엇입니까? XML 파서 또는 데이터베이스에 관한 것입니까? – Krumelur
어떤 옵션이 더 좋고/왜. MySQL 버전을 수정하여 트랜잭션에서 죽지 않도록 할 방법이 있습니까? – jeremy04
java 또는 C#을 사용하는 경우 vtd-xml을 사용하여이 크기의 파일을 처리 할 수 있습니다. SAX보다 훨씬 빠르며 프로세스가 죽지 않습니다 –