LibreOfficeのBaseからSQLite3のDBファイルを開くために。
1. インストール
sudo apt -y install libsqlite3-dev unixodbc unixodbc-dev unixodbc-bin libsqliteodbc
2. ODBCドライバ設定
2-1. /etc/odbcinst.ini
$ sudo ODBCConfig sudo: ODBCConfig: コマンドが見つかりません
$ cat /etc/odbcinst.ini [SQLite] Description=SQLite ODBC Driver Driver=libsqliteodbc.so Setup=libsqliteodbc.so UsageCount=1 [SQLite3] Description=SQLite3 ODBC Driver Driver=libsqlite3odbc.so Setup=libsqlite3odbc.so UsageCount=1
libsqlite3odbc.so
がフルパスでない。パスを調べる。
$ find /usr/lib | grep libsqliteodbc.so (ない!) $ find /usr/lib | grep libsqlite3odbc.so /usr/lib/arm-linux-gnueabihf/odbc/libsqlite3odbc.so
パスを上記のフルパスで修正する。
sudo vim /etc/odbcinst.ini
[SQLite3] ... Driver=/usr/lib/arm-linux-gnueabihf/odbc/libsqlite3odbc.so Setup=/usr/lib/arm-linux-gnueabihf/odbc/libsqlite3odbc.so ...
2-2. ~/odbc.ini
ファイルがない。
$ cat ~/.odbc.ini cat: /home/pi/.odbc.ini: そのようなファイルやディレクトリはありません
手動で作成する。
vim ~/.odbc.ini
[mysqlitedb] Description = mysqlitedb Driver = SQLite3 Database = /home/pi/mytest.db Timeout = 100000 StepAPI = No LongNames = No [JapaneseNames.db] Description = mysqlitedb Driver = SQLite3 Database = /tmp/work/JapaneseNames.db Timeout = 100000 StepAPI = No LongNames = No
3. テスト用DB作成
- JapaneseNames.db
- LastNames
- FirstNames
create_lastnames.sql
create table LastNames( Id primary key not null, Yomi text not null, /* 名字の読み(ひらがな) */ Kaki text not null, /* 名字の表記(漢字) */ UNIQUE(Yomi,Kaki) );
create_firstnames.sql
create table FirstNames( Id primary key not null, Yomi text not null, /* 名字の読み(ひらがな) */ Kaki text not null, /* 名字の表記(漢字) */ Sex text check(Sex='m' or Sex='f' or Sex='c' or Sex='mc' or Sex='fc' or Sex='cm' or Sex='cf'), /* 性別 */ UNIQUE(Yomi,Kaki) );
insert_lastnames.sql
insert into LastNames(Id,Yomi,Kaki) values(1,'すずき','鈴木'); insert into LastNames(Id,Yomi,Kaki) values(2,'やまだ','山田'); insert into LastNames(Id,Yomi,Kaki) values(1,'すずき','鈴木'); insert into LastNames(Id,Yomi,Kaki) values(2,'やまだ','山田'); insert into LastNames(Id,Yomi,Kaki) values(last_insert_rowid(),'たなか','田中');
insert_firstnames.sql
insert into FirstNames(Id,Yomi,Kaki,Sex) values(1,'たろう','太郎','m'); insert into FirstNames(Id,Yomi,Kaki,Sex) values(2,'はなこ','花子','f');
sqlite3 JapaneseNames.db < create_lastnames.sql sqlite3 JapaneseNames.db < create_firstnames.sql sqlite3 JapaneseNames.db < insert_lastnames.sql sqlite3 JapaneseNames.db < insert_firstnames.sql
$ sqlite3 JapaneseNames.db sqlite> .headers on sqlite> select * from LastNames; Id|Yomi|Kaki 0|すずき|鈴木 1|やまだ|山田 sqlite> select * from FirstNames; Id|Yomi|Kaki|Sex 0|たろう|太郎|m 1|はなこ|花子|f
4. LibreOffice BaseでDBファイルを開く
- LibreOffice Base を起動する
既存のデータベースに接続
ラジオボタンをクリックする- コンボボックスから
ODBC
を選択する
次へ
ボタンをクリックする参照
ボタンをクリックする
JapaneseNames.db
をクリックしてOK
ボタンをクリックする
接続のテスト
ボタンをクリックする
接続が正常に確立できました。
ダイアログが出るのでOK
ボタンをクリックする
次へ
ボタンをクリックする- データ登録の是非と保存後の処理を任意に指定する
完了
ボタンをクリックする
- 保存するファイルパスを指定して
保存
ボタンをクリックする
これでやっと開けた。長い……。
テーブル
の欄に作成した表LastNames
, FirstNames
があった。
だが、ダブルクリックしてみるも、レコードがひとつもない……。2行ずつあるはずなのに。
ならselect
文を発行して確認してみよう。メニュー→ツール
→SQL
をクリックする。
あるやん。でも肝心のGUIでデータが見れないんだったら、Baseを使う意味も価値もない。
情報源
所感
こんだけ苦労してよくわからんかった。Baseの使い方が直感的じゃないなら、いらない。さようなら。
前回まで
対象環境
- Raspbierry pi 4 Model B
- Raspbian buster 10.0 2019-09-26 ※
- bash 5.0.3(1)-release 学習まとめ
- SQLite 3.33.0 ※ 学習まとめ
$ uname -a Linux raspberrypi 4.19.97-v7l+ #1294 SMP Thu Jan 30 13:21:14 GMT 2020 armv7l GNU/Linux