Debian GNU/Linux 10でLibreOffice 6 BaseをSQLite 3に接続するには?
今回の目的は、LibreOffice 6のデータベース・アプリであるBaseを簡易データベースであるSQLite 3に接続し、SQLite 3のクライアントとしてBaseを利用するための準備をすること。この課題を実現する過程で若干の壁にぶちあたったので、そのひとつの解決法をまとめてみた。
前提となるソフトウェア環境
- Linuxディストリビューション
- Debian GNU/Linux 10 (buster)
自分がどのLinuxディストロを使っているかはlsb_release -aで分かる。
- インストールするもの
- LibreOffice 6.1.5 Base
- OracleかOpenJDKのJavaランタイム環境(JRE)
- SQLite 3.27.2
- libsqlite3odbc.so
- DB Browser for SQLite 3.10.1(必須ではない)
LibreOffice 6 Baseが標準で利用するデータベースはHSQLDBというもの。これはJavaランタイム環境上で動くので、Javaのランタイム環境(JRE)をインストールして環境変数を設定しておく必要がある。
Debian GNU/Linux 10では、公式のリポジトリからopenjdk-11-jreというdebパッケージをインストールすればいいが、libreoffice-baseというdebパッケージをインストールすればおそらく依存関係のために自動的にインストールされるはず。
SQLiteはバージョン3をここでは利用する。Debian GNU/Linux 10の公式リポジトリからsqlite3というdebパッケージをインストールする。
SQLite 3とLibreOffice 6 Baseを繋ぐにはODBCを利用する。そのためにはlibsqliteodbcというdebパッケージをDebian GNU/Linux 10の公式リポジトリからインストールする。
DB Browser for SQLiteはSQLiteにアクセスしてそれを操作することができるグラフィカルなインターフェイスを持った専用のブラウザ。これによってデータベース、テーブル、フィールドを新たに作成し、データを追加・変更・削除することなどができる。インストールしておくと便利な場合があるかもしれないが、必須ではない。
debパッケージのインストール
上記のdebパッケージをインストールする。すでにインストールされている場合はこの手順は不要。
$ su # apt update # apt install libreoffice-base openjdk-11-jre \ sqlite3 libsqliteodbc sqlitebrowser
データベースの新規作成
SQLiteとLibreOffice Baseとを接続するためにはSQLiteでそれ用のデータベースを予め作成しておく。データベースを新規に作成するには、新しいデータベース名を引数としてSQLiteをまず起動し、.saveによってそれをファイルとして保存する。次のような手順になる。
$ sqlite3 test.db SQLite version 3.27.2 2019-02-25 16:06:06 Enter ".help" for usage hints. sqlite> .save /home/user/text.db sqlite> .exit
.saveの引数にはファイル名とその場所を示すパスを指定。.exitによってSQLite 3を終了させる。
DB Browser for SQLiteを使う場合は次の手順になる。
- DB Browser for SQLiteを起動する。
- 「New Database」を押す。
- ファイル名を入力して任意の場所に保存する。
- テーブルやフィールドを作成するためのエディタが起動するとそれを「Cancel」を押してキャンセルする。
これだけでいい。
.odbc.iniを作成
次に、特定のユーザーでのみ使う場合は、テキストエディタを起動してそのユーザーのホームディレクトリ内に.odbc.iniという隠しファイルを作成する。すべての他のユーザーも共有で使う場合、/etc/odbc.iniを編集する。そのファイルの内容は例えば次のようにする。
[My First Datebase] Description=My First Database Driver=SQLite Database=/home/user/test.db Timeout=1000 StepAPI=No
いちばん重要なのはDatabase=/home/user/test.dbというところ。この書式で先ほど作成した新規データベースの保存場所とファイル名を記しておく。
新しいデータベースを作成するたびに.odbc.iniファイルにこの書式でその保存場所とファイル名を記しておけばいい。
これでLibreOffice Baseを起動してSQLiteと接続したいところだが、接続のテストで次のようなエラーメッセージが表示されて接続に失敗してしまった。
この問題を回避するひとつの方法は/etc/odbcinst.iniの内容を修正すること。/etc/odbcinst.iniを編集するためにはスーパーユーザー権限が必要なんで、ここではsuかsudoを使ってスーパーユーザー権限を取得し、GNU nanoというエディタを用いて/etc/odbcinst.iniの中身を修正した。
nano /etc/odbcinst.ini
/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コマンドを使って調べる。
$ find /usr/lib -name libsqlite3odbc.so /usr/lib/x86_64-linux-gnu/odbc/libsqlite3odbc.so
このパス名は使っているマシンの環境によって変わる可能性があるのでfindコマンドで確認したほうがいい。
で、表示されたこのパス名とファイル名を[SQLite]のDriver=の設定値にする。修正後は次のようになる。
[SQLite] Description=SQLite ODBC Driver Driver=/usr/lib/x86_64-linux-gnu/odbc/libsqlite3odbc.so Setup=libsqliteodbc.so UsageCount=1 [SQLite3] Description=SQLite3 ODBC Driver Driver=libsqlite3odbc.so Setup=libsqlite3odbc.so UsageCount=1
この状態でCtrilキーを押したままoキーを押し、「書き込むファイル: /etc/odbcinst.ini」と表示されるのでEnterキーを押してその修正内容が保存する。
GNU nonaエディタを終了するためにはCtrlキーを押したままxキーを押す。
これで準備万端。
LibreOffice BaseとSQLite 3のデータベースとを接続する
- LibreOffice Baseを起動する。データベース・ウィザードが起動するはず。
- 「既存のデータベースに接続」にチェックを入れ、「ODBC」を選ぶ。そして「次へ」。
- 「システム上のODBCデータソースの名前」の「参照」を押す。
- データソースとして.odbc.iniファイルに記したデータベース、先ほど記した[My First Detabase]を選ぶ。「OK」を押して「次へ」。
- 「ユーザー認証のセットアップ」では何も入力せずに「接続のテスト」を押す。接続に成功すればそれを知らせる次のようなメッセージ・ボックスが表示される。そして「次へ」。
- 「データベースを保存したあとの処理を決定してください」では、そのままの状態で「完了」を押して大丈夫。データの登録やテーブルの作成は後からでも実行することができる。
- これでLibreOffice Baseの操作を行うことができる主要なウィンドウが表示される。
新しいデータベースを作成したらそのたびに.odbc.iniファイルにそのための設定を加えていけばいい。例えば次のように。
[My First Datebase] Description=My First Database Driver=SQLite Database=/home/user/test.db Timeout=1000 StepAPI=No [My Second Datebase] Description=My Second Database Driver=SQLite Database=/home/user/mydata.db Timeout=1000 StepAPI=No
そしてこのような手順でデータベース・ウィザートを用いてLibreOffice Baseと接続する。
LibreOffice Baseの使い方についてはまたの機会に。
参考になるウェブページのURL
- Apache OpenOffice Wiki: https://wiki.openoffice.org/wiki/Documentation/How_Tos/Using_SQLite_With_OpenOffice.org
- LibreOffice 6.1 Help: https://help.libreoffice.org/6.1/ja/text/shared/explorer/database/main.html?DbPAR=BASE
コメント
コメントを投稿