我有一個FASTA文件如下如何解析FASTA文件並使用DBI在Perl中將序列提交到SQLite數據庫文件?
>header1
AAAAA
AAA
>header2
BBBBB
我已經能夠通過使用DBI Perl來創建一個SQLite的表。
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
my $dbh = DBI->connect("DBI:SQLite:dbname=gene.db" , "" , "" ,
{ PrintError => 0 , RaiseError => 1 });
$dbh->do("DROP TABLE IF EXISTS genes");
$dbh->do("CREATE TABLE genes(gene_name VARCHAR(50) PRIMARY KEY, sequence TEXT)");
parse();
sub parse{
my $fasta_file = 'example.faa';
my $header='';
my $sequence='';
open(INPUT, $test_file) || die "ERROR: can't read input file: $!";
while(<INPUT>){
if(/^>(.+?)/){
$header=$1;
#$dbh->do("INSERT INTO genes VALUES('$header','$sequence')");
$sequence='';
}else{
$sequence.=$_;
}
}
}
$dbh->disconnect();
現在我知道$dbh->do("INSERT INTO genes VALUES('$header','$sequence')");
將插入頁眉和順序到數據庫中,但我在使用的第一項問題,尤其是如果第一個項目有一個多行序列。第一個條目的順序似乎被下移到第二個條目。我試圖將$dbh->do
聲明移入其他位置,但我可能會出現錯誤。思考?
sqlite> select * from Genes;
header sequence
---------- ----------
header1
header2 AAAAAAAA
我碰到下面的錯誤,如果我把do()
語句else
子句。
DBD::SQLite::db do failed: column header is not unique
定義「問題」。你有錯誤信息嗎? – Cfreak 2013-03-05 22:08:03
@Cfreak對不起,我在完全解釋之前提交了問題。我得到以下錯誤:DBD :: SQLite :: db失敗:列標題不是唯一 – Stephen 2013-03-05 22:21:05