嘿傢伙這是我的第一個問題在這裏。我試圖在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()
編輯:它現在崩潰,因爲交易是被鎖(因爲表是Innodb的) 錯誤編號:1205 鎖等待超時超標;嘗試重新啓動事務。我正在使用 MySQL版本:5.1.43
我應該將數據庫切換到Postgrelsql嗎?
你在這裏有什麼問題?是關於XML解析器還是數據庫? – Krumelur 2010-05-26 17:59:02
哪個選項更好/爲什麼。是否有任何方法來修復我的MySQL版本,以便它不會死於交易? – jeremy04 2010-05-26 18:03:21
如果您使用java或C#,您可以使用vtd-xml處理此大小的文件,這比SAX快很多,您的進程不會死於 – 2010-05-26 18:52:25