CDTV のランキングデータを DB に突っ込むバッチ的プログラムを走らせておりましたところ、主キー制約違反でバッチが死にました。
元凶は 2010/08/07 付のランキングで、92 位がなぜか 2 つある。
ランキング用テーブルの主キーは日付 + 順位だったので、同じ順位が 2 つあると主キー制約違反で落ちるのは自然の摂理です。自然がぼくに牙をむいた。
ぼくは、これ CDTV の Web サイト側のミスなんじゃないかなって思ってるけど、真相は闇の中です。とにかく、この主キー制約違反をなんとかしないといけない。
仕方がないので主キーに曲名も加えることにしましたが、sqlite で主キーを変更するコマンドがどうにもこうにも見つからない*1。
dump とって insert しなおすことにしました。
$ sqlite3 db/rank.db '.dump ranking' > ranking.dump $ vi ranking.dump # 主キーにタイトルを加える $ rm db/rank.db $ sqlite3 db/rank.db '.read ranking.dump'
*1:存在するんなら教えてください