競馬データベース管理システム 運用マニュアル & かんたんSQL実践ガイド
本システムは、「競馬道OnLine」のKD3形式データおよび「ストライド競馬新聞」のCSV/ZIPデータを自動ダウンロード・解析し、SQLiteデータベース(keiba.db)へ高速統合・管理するためのデスクトップアプリケーションです。
| OS | Windows 10 / 11 (64bit) |
|---|---|
| 外部解凍ツール | 7-Zip (C:\Program Files\7-Zip\7z.exe)※大容量アーカイブの高速展開に使用します。 |
| データベース | SQLite 3(WALモード対応・インデックス自動最適化) |
| 主要ファイル |
keiba.db : 統合データベース実体config.json : 認証設定ファイルdownloads/ : 競馬道LZH一時展開領域stride_data/ : ストライドZIP一時展開領域
|
自動取得機能を利用するには、各サービスの会員アカウントを登録する必要があります。
member_id, passworduid (メールアドレス), パスワード (4桁数字)config.json に安全に書き込まれます。
会員認証設定ダイアログ
初期導入時は、提供されている過去全期間のデータをワンクリックで一括ダウンロード&インポートできます。
処理中に 「🛑 処理中止」 を押した場合でも、完了した年・ファイルまでのデータは安全にDBへ保存されます。次回再開時は重複登録されずに差分から継続されます。
毎週末の出馬表更新、直前オッズ、レース終了後の確定着順・払戻金の反映は、以下の3ステップで行います。
| ステップ | 操作ボタン | 処理内容・挙動 |
|---|---|---|
| Step 1 | 🔄 差分取得 (競馬道) | DB内の最新日付以降に配信された最新データパックおよび未取得LZHファイルを検出し、自動ダウンロードします。 |
| Step 2 | 📥 インポート (競馬道LZH) | ダウンロードされたLZHファイルを高速解凍し、各テーブルへデータを反映します。インポート完了後のファイルは自動削除されます。 |
| Step 3 | 🌐 ストライドWeb自動DL | ダイアログに開催日(例: 20260823)を入力して実行すると、当日の指数データを取得・解析し、kol_stride テーブルへ格納します。 |
ブラウザ等から手動でダウンロードしたストライドのZIPファイルがある場合は、stride_data フォルダ内に配置して 📁 ローカルストライド取込 を押すことで一括インポートできます。
本システムで自動構築・同期されるSQLiteテーブルの概要です。
| テーブル名 | 主キー (PRIMARY KEY) | 格納データ内容 |
|---|---|---|
kol_sei1 |
year, venue_code, times, day, race_number | レース確定成績、ラップタイム、コーナー通過順、全券種払戻金 |
kol_sei2 |
上記 + horse_number | 出走各馬の確定着順、確定オッズ、斤量、調教時計、タイム差 |
kol_den1 |
year, venue_code, times, day, race_number | 出馬表ヘッダ、コースレコード、想定展開、本紙短評 |
kol_den2 |
上記 + horse_number | 出走登録馬、枠順・馬番、騎手・厩舎、直前調教評価、前走情報 |
kol_uma |
horse_code | 競走馬マスタ、5代血統、通算成績、馬主・生産者情報 |
kol_stride |
race_date, venue_code, race_number, horse_number | ST指数、仕上り指数、先行力、追走力、持久力、持続力、瞬発力、展開、バイアス |
kol_ods / kol_kod |
year, venue_code, times, day, race_number | 単勝・複勝・馬連・三連単等の確定および前日オッズ明細 |
全テーブル・全カラム(データ型、日本語カラム名、主キー設定)を網羅した詳細定義書は、メニューバーの 『ヘルプ(H)』 ➔ 『📑 全テーブル定義書』 からいつでも閲覧可能です。
また、定義書画面右上の 「📥 定義書をダウンロード (CSV / HTML)」 をクリックすることで、Excel等で開ける定義書ファイルをローカルへ保存できます。
難しそうに見えるSQLですが、やっていることは「レストランで店員さんに注文する」のと全く同じです。
「【メニュー表】 から、【ハンバーグ】 と 【ライス】 をください!」
「FROM 【テーブル名】 から、SELECT 【見たいデータ列】 を持ってきて!」
つまり、「どのシートから(FROM)」「どの項目を取り出すか(SELECT)」 を指定するだけで完了します。
ストライド指数テーブル(kol_stride)から、馬番と先行力を取り出す基本構文です。
SELECT horse_number, senko FROM kol_stride;
これだけで、データベースの中から「馬番」と「先行力」の列だけが一覧になって取り出せます。
データベースの中身は race_date(開催日)や st(ST指数)のように英単語になっています。そこで、単語の後ろに AS 日本語名 を付けると、見出しを日本語に変えて取り出すことができます。
SELECT
race_date AS 開催日,
venue_code AS 場コード,
race_number AS レース,
horse_number AS 馬番,
st AS ST指数,
senko AS 先行力,
bias AS バイアス
FROM kol_stride
LIMIT 10;
このクエリを実行してExcelに貼り付けると、最初から綺麗な日本語見出しがついた表が一瞬で完成します。
「AS 〇〇」を使うと、Excelの1行目に日本語の見出しがそのままセットされます
レシピ 1 出走馬の能力バランスを一覧チェック
ST指数・先行力・追走力・瞬発力をまとめて取得し、レース内の力関係を一目で把握します。
SELECT
race_date AS 開催日,
venue_code AS 場コード,
race_number AS R,
horse_number AS 馬番,
st AS ST指数,
senko AS 先行力,
tsuiso AS 追走力,
shunpatsu AS 瞬発力
FROM kol_stride
ORDER BY race_date DESC, CAST(race_number AS INTEGER) DESC
LIMIT 15;
Excelで馬ごとの瞬発力や追走力の違いが一目瞭然になります
レシピ 2 先行力も追走力も高い「強力先行馬」を絞り込み
WHERE(条件指定)を使い、先行力55以上かつ追走力50以上の軸馬候補を抽出します。
SELECT
race_date AS 開催日,
venue_code AS 場,
race_number AS R,
horse_number AS 馬番,
st AS ST指数,
senko AS 先行力,
tsuiso AS 追走力
FROM kol_stride
WHERE senko >= 55.0 AND tsuiso >= 50.0
ORDER BY race_date DESC, CAST(race_number AS INTEGER) DESC
LIMIT 20;
軸馬候補となるハイレベルな先行馬だけがズラリと抽出されます
データ件数の増加に伴うパフォーマンス低下を防ぐための機能です。
| 症状・エラー | 原因 | 対処方法 |
|---|---|---|
| ログイン失敗 / 認証エラー | config.json の認証情報ミス、または会員の期限切れ。 |
メニュー『ファイル』➔『会員認証設定』を開き、ID・パスワードに余計な空白が含まれていないか再確認してください。 |
| ストライドデータがDLできない | データ未公開、または非開催日。 | ストライド新聞は開催日前日の夕方以降に配信されます。公開日時および入力日付(YYYYMMDD形式)をご確認ください。 |
| 解凍エラーが発生する | 7-Zipが指定パスに存在しない。 | C:\Program Files\7-Zip\7z.exe に7-Zipがインストールされているか確認してください。 |
| データベースがロックされている | 他ツール(SQLite Viewer等)でDBを開いている。 | 他ツールを終了し、アプリを再起動してください。本システムはWALモードにより同時読み込み耐性が強化されています。 |