Feb 23, 2006
MySQLのデータベースにBBSのログファイルをインポートする
データベースとPerlないしPHPの連携は、進化するwebページに必須のことのようだ。
そこで、試しにBBSのログファイルをデータベースにインポートしてみた。
まずMySQLにBBSというデータベースを作り、そこに、gs_bookというテーブルを作る。
これはPhpmyadminから実行した。
CREATE TABLE gs_book (
id int(11) NOT NULL,
bbs_date text NOT NULL,
bbs_auth text NOT NULL,
bbs_mail text,
bbs_msg text NOT NULL,
bbs_ip text NOT NULL,
PRIMARY KEY (id)
);
この場合、どうしてもPRIMARY KEYを設定する必要があるので、ログの各行に通番をふる。しかも通常の順とは逆に古いものを若い番号にする。
これは、perlでやる。
open(LOG,'logfile');
@all=<LOG>;
$num=1;
while($gyou=(pop @all)){
print $num,'|',$gyou;
$num++;
}
区切り子は、各ログファイルで違うが、<>が多いようだ。ぼくの場合はこの区切り子をviで|に直してしまったが、その必要はないかもしれない。
mysql -uroot -pパスワード --local-infile=1
を実行する。
この「--local-infile=1」は重要である。ぼくもなぜかはわからないが(^^)。これをいれないとエラーになる。
つづいて、
mysql>use BBS;
mysql> load data local infile './logfile' into table gs_book
-> fields terminated by '|'
-> lines terminated by '\n';
を実行する。
なおテキストファイルからのインポートは、Phpmyadminからもできる。
これでPerl DBIを使っていろいろできるし、BBSのログを全部リアルタイムでデータベースに送ることもできる。
WriteBacks
http://www.haizara.net/~shimirin/blosxom/blosxom.cgi/computer/linux/20060223140558.trackback
writeback message: Ready to post a comment.