「SQLite ODBC」 Excel AccessからSQLiteデータベースを使用する SQLポケリ

本日のネタは、SQLite ODBCである。
DSC_1228[1].jpg
ExcelからSQLiteを使う場合の手段としてSQLite for Excelは試してみたのだが、本日はSQLite ODBCをやってみたいと思う。
ODBCドライバなら汎用性が高い。ExcelだけでなくAccessやその他のソフトウェアと連携することができる。

まずは、以下のサイトからsqliteodbc.exeをダウンロードしてくる。

ちょっと怪しげな海外のサイトではある。まぁ大丈夫でしょう。カスペルスキー入ってるし。
で、もってきたsqliteodbc.exeを実行する。
2018-06-13 (1).png
2018-06-13 (2).png
2018-06-13 (3).png
2018-06-13 (4).png
2018-06-13 (5).png
こんな感じであっという間にインストールは終了
Oracleだとかはこうはいかない。いいねぇ軽量データベースは。
ODBCって本当は、Open Database Connectivity (コネクティビティの綴りあってる?)なのでサーバに接続するための仲介用ソフトウェアしか用意されていないはず、なんだけどSQLite ODBCの場合はSQLiteエンジンも含まれているので、ODBCだけでデータベースが使えるようになる。
Oracleに接続する用のODBCドライバを入れても、Oracleデータベースがなければ「話にならない」のとは別でSQLite ODBCドライバを入れたら、「それだけでデータベースが使える」ようになるわけである。これはお手軽。
Program Files (x86)\SQLite ODBCにインストールされているらしいので、そのフォルダを覗いてみると、sqlite3.exeを発見。PATH環境変数を切ってやる。
コマンドプロンプトからsqlite3コマンドを実行してみる

C:\Users\asai>sqlite3 testsqlite.db
SQLite version 3.22.0 2018-01-22 18:45:57
Enter ".help" for usage hints.
sqlite>

おっ ちゃんと動くじゃない。
ODBCの設定をして、データベースを作ってみる。
2018-06-13 (6).png
2018-06-13 (7).png
ODBCのDSN「SQLite ODBC」が作成できた。
これでExcelからでもAccessからでもSQLiteデータベースが使えるはず。
データベースファイルのパスは、「C:\Users\asai\testsqlite.db」とした。
まずは、からっぽなのでsqlite3コマンドでテーブルだけ作ってやる。

C:\Users\asai>sqlite3 testsqlite.db
SQLite version 3.22.0 2018-01-22 18:45:57
Enter ".help" for usage hints.
sqlite> create table foo (a integer, b text);
sqlite> .quit

次に、MS Accessでテーブルをリンク(アタッチ)する。
[外部データ]タブ -> [新しいデータソース] -> [他のソースから] -> [ODBCデータソース]をクリックしていく。
インポートじゃなくて、テーブルにリンクするの方を選択。
コンピュータデータソースでさっき作ったSQLite ODBCを選択。
2018-06-13 (10).png
2018-06-13 (11).png
テーブルの一覧が表示された。
fooしかテーブル作ってないからOK。
fooを選択して、OKボタンを押す。
プライマリキーの選択になったが、とりあえずのテストなので無選択でOK。
2018-06-13 (12).png
テーブルfooがリンクできた。
開いてみたが編集できず。リンクテーブルってそういうものなんだっけ?
プライマリキーを設定していないからか?しまった。
もう一回リンクテーブルを作って、プライマリキーをa列にしてみた。
2018-06-13 (13).png
入力できるようになった。

えっプライマリキーの付け方がわからないって?そんなあなたには「SQLポケットリファレンス」ですよ。
C:\Users\asai>sqlite3 testsqlite.db
SQLite version 3.22.0 2018-01-22 18:45:57
Enter ".help" for usage hints.
sqlite> select * from foo;
1|いち
2|二
3|さん
sqlite>

ちゃんと入ってる!
MS Accessの記事についてはこちらを参照されたし

投稿者プロフィール

asai
asai