PerlでデータをMysqlに送る(insert)
Excelで管理していたデータをMysqlに移行させることにした。記録データ(html)からスクレイピングしてMysqlに送る。(後でわかったけどcsvから一発でMysqlにぶち込むことも可能。)
まずテーブルをつくっておく。
record.sql
create table record ( id int not null auto_increment primary key, score double, url varchar(255), memo text, created date );
記録データ(html)のDataをvimで変更(置換)
:%s/12.10./2012-10-/g :%s/12.11./2012-11-/g
scraper.pl
use Web::Scraper; use URI; use DBI; my $dbh = DBI->connect('DBI:mysql:DATABASENAME','USERNAME','PASSWD'); my $scraper = scraper { process ".data", "data[]" => "TEXT"; process ".time", "score[]" => "TEXT"; process ".url a", "url[]" => '@href'; }; my $res = $scraper->scrape( URI->new("http://www43.atpages.jp/ukie/ona/record.html")); for (0..34) { my $data = shift @{ $res->{data} }; my $score = shift @{ $res->{score} }; my $url = shift @{ $res->{url} }; my $sth = $dbh->prepare("insert into record (score,url,created) value ($score,?,?)"); $sth->execute($url,$data); $sth->finish; } $dbh->disconnect;