perlで書いたcgiでログ解析をしているのだが、現在持っているログを全部読むとcgiがタイムアウトしてしまう。
件数は13万件弱である。
そこで、毎回毎回テキストを全部読んで数えるのは面倒くさいので、
mysqlにDBとして登録してしまえば、と思ってやってみた。
mysqlは別のことで使ったことがあって、
dbを作ってテーブルを作ってそこにperlでレコードを登録する、
という一連のことはやったことがあった。
それを流用してログを登録していると、エラーが発生した。
それは、シングルクォーテーションがデータ区切りとして認識されてしまうために起きていた。
シングルクォーテーションは二つ続けて書くことでエスケープできるようなので、ログファイルのシングルクォーテーションを探してそのようにした。
そんなにたくさんはないので一個ずつ直した。
今回はそれでいいのだが、ゆくゆくはアクセスがあった時点でそのつどログをdbに書こうと思っている。
このログとはいわゆる「掲示板」のようなCGIで、アクセス数は日に数件程度なのでそれでよいのだ。
でも、シングルクォーテーションがあったらそれを2個にするようにいちいちしなければならないのは、ちょっとイヤだな。
とりあえずできた。
12万件を登録するのはけっこう時間がかかった。30分くらい?
select文でいろいろ検索してみる。一発だ。