やあ皆さん、これは私の最初の質問です。SQL で UniprotKB のローカル コピーを作成しようとしています。
UniprotKB は 2.1GB で、XML と SwissProt で使用される特別なテキスト形式で提供されます。
ここに私のオプションがあります:
1) SAX パーサー (XML) を使用します。Ruby と Nokogiri を選択しました。パーサーの作成を開始しましたが、最初の反応は、XML スキーマを SAX パーサーにマップするにはどうすればよいかということでした。
2) BioPython - 私はすでに BioSQL/Biopython をインストールしており、文字通り SQL スキーマを作成してくれました.1 つの 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 に切り替える必要がありますか?