投稿

ラベル(SQLite)が付いた投稿を表示しています

競馬成績表データベースを作る(ツール-HSP編)

イメージ
1.概要 競馬成績表データベースを作るの最終回です。第四弾で 競馬成績表データベースを作る(ツール-Excel編) では、 データベースをExcel VBAにて作成したプログラムで操作しましたが、今回の記事では、HSPスクリプト言語で同等の機能のものを作ります。 実行形式(exe)ファイルとしているので、扱いも簡単でExcel版よりも、やや高速に動作します。HSPに付属しているSQLite3のラッパーモジュールで SQLite3のデータベースを操作できます。 2.ソースコード まずは、raceseiseki.exeを起動します。使い方は、 Yahoo競馬レース成績表検索.xlsm と同様に検索条件の 「競馬場」、「距離」、「コース」のプルダウンをそれぞれクリックして条件を選択します。検索ボタンをクリックすれば、条件にヒットしたものを全件出力します。 出力ボタンをクリックするとカンマ区切りのテキスト形式で出力します。 ソースコードの大部分は画面作成部分であり、実際にデータベースを操作する部分は、154行目から184行目となります。 また、最大抽出件数は、SQL文でLIMIT=20000件と制限しています。ページ制御もしていないので、Excel版と比べて非常にコンパクトです。 実際、筆者は約25万件のデータベースを作成して利用しています。 ;***** (raceseiseki.hsp) ***** #include "sqlele.hsp" ;***** 実行ファイル自動作成 **** #packopt type 0 #packopt name "raceseiseki" #packopt runtime "hsprt" #packopt hide 1 #module #uselib "kernel32.dll" #cfunc CreateMutex "CreateMutexA" int,int,sptr #cfunc GetLastError "GetLastError" ;***** 二重起動防止 ***** #deffunc wexapend str prm1 strname=p

競馬成績表データベースを作る(ツール-Excel編)

イメージ
1.概要 競馬成績表データベースを作るの第四弾です。これまで、作成したデータベースを活用するためには、検索表示などができないと 何の役にも立ちません。今回は、Excel VBAで作成します。当ブログ記事の 「Excelでデータベース(SQLite3)を扱う」 で紹介しているテンプレートとなるソースコードを元にして、検索部分とデータ出力機能を追加しデータが抽出できるようにしたものです。 データベースをしっかり作成していれば、競馬以外の他の用途でも、いろいろと応用の効くものとすることができます。 2.ソースコード まずは、簡単に操作方法を説明します。 Yahoo競馬レース成績表検索.xlsm を起動します。 検索条件のコンボボックスで「競馬場」、「距離」、「コース」の3つの条件を選択して、実行ボタンをクリックします。 抽出対象データがあれば、100件/1ページ単位にデータが表示されます。ページ制御をしていますので、「次ページ」、 「前ページ」、「先頭」、「最終」のボタンをクリックしてページを表示させます。 また、「出力」ボタンをクリックすると、CSV形式で抽出したデータを外部出力できます。「消去」ボタンは、 画面上のデータを強制的に消去するものです。新たな条件で「実行」ボタンをクリックすれば、前処理として 消去(画面クリア)させていますので、通常は操作不要です。尚、 Yahoo競馬レース成績表検索.xlsm の実行には、 SQLite の ODBC とこのプログラムで利用する データベース(pegasus.db) が 必要 ですので事前に準備しておいて下さい。 ThisWorkbook は、ブックを開いた時の初期設定処理をしています。検索条件設定用のコンボボックスに値をセットします。 '***** ブックを開いた時の初期設定処理 ***** Private Sub Workbook_Open() Sheets("成績表").Select Worksheets("成績表").Activate '***** 検索条件用のコンボボックスを設定 ***** ' 競馬場 Dim CBRaceKaisai(10) CBRac

競馬成績表データベースを作る(データベース編)

イメージ
1.概要 「競馬成績表データベースを作る」の第三弾として、競馬成績表データの取得が完了していることを前提として、 記事を進めていきます。今回は、取得済みデータ(CSVファイル)からデータベースを作っていきます。 データベースは、SQLite3を利用しますので、当ブログ記事の 「Excelでデータベース(SQLite3)を扱う」 を一読願います。 データベースを作成するための必要なツールなどを紹介しています。これからの作業で必要となりますので、準備しておいて下さい。 2.作成手順 第二弾で説明したデータ取得編での作業が終了しているものとします。 (1)取得データの格納先パスを指定しなかったので、取得データは、カレントディレクトリにあると      思います。 (2)作業のために新規フォルダとして、「成績」と「日程」という2つのフォルダを作成します。 (3)RXXXXXXXXXXXXXX.txtは日程フォルダへ移動、SXXXXXXXXXXXXXX.csvは成績フォルダへ移動      させて下さい。 (4)DBへの入力元となるインポート用成績表ファイルをマージします。マージ処理は、当ブログの       「複数のファイルをマージする」 で公開の テキストファイルマージツール(tfmarge.exe) を使用      します。マージ対象先である成績フォルダを選択し、拡張子はcsvで出力ファイル名を成績      マージ.csvとしてマージボタンをクリックします。      成績フォルダ内に成績マージ.csvが作成されますので、カレントディレクトリに移動させます。 (5)成績マージ.csvファイルをメモ帳等のテキストエディタで開いて、先頭行にヘッダ名を挿入し      ます。予め別メモで書いているものをコピーして貼り付けると良いでしょう。 (6)import.batをダブルクリックして、成績マージ.csvファイルからデータベースを作成します。       ※【注意】import.batと同一フォルダにsqlite3.exeが必要です。      ・作成するDBファイル名 : pegasus.db      ・インポートCSVファイル名 : 成績マージ.csv (エンコード : UTF-8)      ・テー

Excelでデータベース(SQLite3)を扱う

イメージ
1.概要 扱うデータ件数が数十万件となると、Excelのシート内では、読み込みにも時間が掛かるし、場合によってはパソコンの性能に左右されて 固まってしまいます。読みんだ後も動作が緩慢で使い勝手が悪くなります。数十万件のデータでも必要な部分は数百から数千件のデータで ある場合が多いものです。このような場合は、データベースを利用するとページ単位の読み込みや必要なデータの検索などが比較的容易に できるようになります。今回は、手軽に利用できる SQLite3 によるデータベースをExcelで扱う方法について紹介します。 2.事前準備作業 ExcelなどからSQLiteのデータベースを扱うには、本体であるsqlite.exeやsqlite.dllなどが必要な場合もありますが、 今回、紹介するものは、色んな言語で汎用的に利用できるODBCドライバをインストールしてデータベースを扱います。 一度、インストールしてしまえば、Excel上ではDSN(データソース)の設定なども必要ありません。 2-1.ODBCドライバーの入手とインストール まずは、ODBCドライバーの入手とインストールです。ODBCドライバーは海外サイトですが、下記のサイトからダウンロードできます。 海外サイトということで怪しいと思われますが、広告や他のサイトへの誘導などはありません。 ダウンロード先 : http://www.ch-werner.de/sqliteodbc/ このサイトの真ん中あたりにCurrent versionという部分の下に2つのodbcドライバーがあります。 sqliteodbc.exeは32bit版で、sqliteodbc w64.exeは64bit版です。WindowsのOSが32bitのものか64bitのものか、また、Excelのバージョンが 32bit版なのか64bit版なのか判断に迷います。 ※(どれを選択すれば良いか筆者には適切に指示するこはできません) 両方インストールしても問題なさそうですが、たぶん、利用しているExcelのバージョンによるものだと思います。 筆者は、Windows10の64bit版で、Excelも64bit版なので、sqliteodbc w64.exeをダウンロードしてインストールしました。 ダウンロードしたら、

TOP