package main; # Written 2007 Chad Redman # Free for any use use DBI; my $INFILE = 'G:/Home/Chinese/corpora/LCMC/pos-extracted.txt.U8'; my $DBFILE = 'G:/Home/Chinese/devel/corpus/lcmc_pinyin.db3'; #my $DBFILE = 'G:/Home/Chinese/devel/corpus/lcmc'; open(IN, "< $INFILE") or die $!; my $dbh = DBI->connect("dbi:SQLite:dbname=$DBFILE","","") or die $!; $dbh->{unicode} = 1; $dbh->{AutoCommit} = 0; while () { chomp; next if (/^\s*$/); my ($id, $desc) = split(/\t/, $_, 2); eval { write_object($dbh, $id, $desc); }; if ($@) { print "Transaction aborted because $@"; eval { $dbh->rollback }; exit 1; } } $dbh->commit; # commit the changes if we get this far exit 0; sub write_object { my ($dbh, $id, $val) = @_; my $sth = $dbh->prepare("INSERT INTO pos VALUES(?, ?)"); my $rows_affected = $sth->execute($id, $val); if ($rows_affected != 1) { print "*Error: $id: $rows_affected, ", $dbh->errstr, "\n"; return; } }