「SQLite ODBC」 Excel AccessからSQLiteデータベースを使用する SQLポケリ [SQLポケリ]
本日のネタは、SQLite ODBCである。
ExcelからSQLiteを使う場合の手段としてSQLite for Excelは試してみたのだが、本日はSQLite ODBCをやってみたいと思う。
ODBCドライバなら汎用性が高い。ExcelだけでなくAccessやその他のソフトウェアと連携することができる。
まずは、以下のサイトからsqliteodbc.exeをダウンロードしてくる。
ちょっと怪しげな海外のサイトではある。まぁ大丈夫でしょう。カスペルスキー入ってるし。
で、もってきたsqliteodbc.exeを実行する。
こんな感じであっという間にインストールは終了
Oracleだとかはこうはいかない。いいねぇ軽量データベースは。
ODBCって本当は、Open Database Connectivity (コネクティビティの綴りあってる?)なのでサーバに接続するための仲介用ソフトウェアしか用意されていないはず、なんだけどSQLite ODBCの場合はSQLiteエンジンも含まれているので、ODBCだけでデータベースが使えるようになる。
Oracleに接続する用のODBCドライバを入れても、Oracleデータベースがなければ「話にならない」のとは別でSQLite ODBCドライバを入れたら、「それだけでデータベースが使える」ようになるわけである。これはお手軽。
Program Files (x86)\SQLite ODBCにインストールされているらしいので、そのフォルダを覗いてみると、sqlite3.exeを発見。PATH環境変数を切ってやる。
コマンドプロンプトからsqlite3コマンドを実行してみる
おっ ちゃんと動くじゃない。
ODBCの設定をして、データベースを作ってみる。
ODBCのDSN「SQLite ODBC」が作成できた。
これでExcelからでもAccessからでもSQLiteデータベースが使えるはず。
データベースファイルのパスは、「C:\Users\asai\testsqlite.db」とした。
まずは、からっぽなのでsqlite3コマンドでテーブルだけ作ってやる。
次に、MS Accessでテーブルをリンク(アタッチ)する。
[外部データ]タブ -> [新しいデータソース] -> [他のソースから] -> [ODBCデータソース]をクリックしていく。
インポートじゃなくて、テーブルにリンクするの方を選択。
コンピュータデータソースでさっき作ったSQLite ODBCを選択。
テーブルの一覧が表示された。
fooしかテーブル作ってないからOK。
fooを選択して、OKボタンを押す。
プライマリキーの選択になったが、とりあえずのテストなので無選択でOK。
テーブルfooがリンクできた。
開いてみたが編集できず。リンクテーブルってそういうものなんだっけ?
プライマリキーを設定していないからか?しまった。
もう一回リンクテーブルを作って、プライマリキーをa列にしてみた。
入力できるようになった。
ちゃんと入ってる!
MS Accessの記事についてはこちらを参照されたし
サイト内を検索
ExcelからSQLiteを使う場合の手段としてSQLite for Excelは試してみたのだが、本日はSQLite ODBCをやってみたいと思う。
ODBCドライバなら汎用性が高い。ExcelだけでなくAccessやその他のソフトウェアと連携することができる。
まずは、以下のサイトからsqliteodbc.exeをダウンロードしてくる。
ちょっと怪しげな海外のサイトではある。まぁ大丈夫でしょう。カスペルスキー入ってるし。
で、もってきたsqliteodbc.exeを実行する。
こんな感じであっという間にインストールは終了
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の設定をして、データベースを作ってみる。
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を選択。
テーブルの一覧が表示された。
fooしかテーブル作ってないからOK。
fooを選択して、OKボタンを押す。
プライマリキーの選択になったが、とりあえずのテストなので無選択でOK。
テーブルfooがリンクできた。
開いてみたが編集できず。リンクテーブルってそういうものなんだっけ?
プライマリキーを設定していないからか?しまった。
もう一回リンクテーブルを作って、プライマリキーをa列にしてみた。
入力できるようになった。
えっプライマリキーの付け方がわからないって?そんなあなたには「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の記事についてはこちらを参照されたし
「改訂第4版SQLポケットリファレンス」は、SQLiteにも対応しています。
関連記事
「SQLite for Excel」 Excel VBAからSQLiteデータベースを使用する
SQLiteでのデータ型
Androidアプリ開発 SQLiteデータベースを使用する
SQLポケットリファレンス 台湾版SQLポケットリファレンス 台湾版の紹介
SQLポケリが第4版になりました
Access クエリ 徹底活用ガイド ~仕事の現場で即使える
- 作者: 朝井 淳
- 出版社/メーカー: 技術評論社
- 発売日: 2018/05/25
- メディア: 大型本
関連記事
「SQLite for Excel」 Excel VBAからSQLiteデータベースを使用する
SQLiteでのデータ型
Androidアプリ開発 SQLiteデータベースを使用する
SQLポケットリファレンス 台湾版SQLポケットリファレンス 台湾版の紹介
SQLポケリが第4版になりました
サイト内を検索
Copyright Atsushi Asai Google+朝井淳
[データベースの気持ちがわかる]SQLはじめの一歩 (WEB+DB PRESS plus)
- 作者: 朝井 淳
- 出版社/メーカー: 技術評論社
- 発売日: 2015/03/03
- メディア: 単行本(ソフトカバー)
Access クエリ 徹底活用ガイド ~仕事の現場で即使える
- 作者: 朝井 淳
- 出版社/メーカー: 技術評論社
- 発売日: 2018/05/25
- メディア: 大型本
はじめまして
わかりやすい解説で、AccessでODBC接続でSQLiteのテーブルをリンクすることができました。そして、Accessのクエリーでデータのインサートもできました。しかし、クエリーの”DELETE * from Table;”を実行させたら、エラーになりました。SQLite側の環境では、"DELETE from Table;"で、全データが削除できることを確認できました。
Accessのクエリーで、リンク先のSQLiteのテーブルのデータを全て削除するには、どのようにすれば良いのかわかりません。
ご存じなら、おしえてほしいのです。
お手数ですが、よろしくお願いします。
by 中山 (2022-01-13 10:20)
もしかして「DELETE * From Table;」で実行してませんか?
Accessの削除クエリでやるとこうなるのかな?
単なるクエリかな。レコードの削除は削除クエリでやらないとダメだったかも。
DELETE命令では「*」付けたらエラーになると思います。
「DELETE From Table;」
で試してみて下さい。
by AREarthroid (2022-10-09 19:10)