ブログの説明

学校に通わないで学んだことを記しています。間違っているところが何かありましたらご指摘下さると幸いです。コメントに対する返信が遅れる可能性があります。その場合は申し訳ありません。

このブログではサイドバーに広告を表示しています。このブログ内の投稿記事を検索するには右上の拡大鏡のアイコンを、アーカイブやラベル付けから投稿記事を閲覧するには左上の三重線のアイコンをクリックして下さい。

数式の表示にはMathJaxを利用させていただいています。数式の表示のためにJavaScriptが有効である必要があります。そうでない場合、訳の分からないLatexのコードが表示されます。幾何学図形やチャートの表示にはHTML5 CanvasやGoogle Chartを使用しています。その表示のためにもJavaScriptが有効である必要があります。

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を使う場合は次の手順になる。

  1. DB Browser for SQLiteを起動する。
  2. 「New Database」を押す。
  3. ファイル名を入力して任意の場所に保存する。
  4. テーブルやフィールドを作成するためのエディタが起動するとそれを「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と接続したいところだが、接続のテストで次のようなエラーメッセージが表示されて接続に失敗してしまった。

[unixODBC][Driver Manager]Can't open lib 'libsqliteodbc.so' : file not found

この問題を回避するひとつの方法は/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のデータベースとを接続する

  1. LibreOffice Baseを起動する。データベース・ウィザードが起動するはず。
  2. 「既存のデータベースに接続」にチェックを入れ、「ODBC」を選ぶ。そして「次へ」。
  3. 「システム上のODBCデータソースの名前」の「参照」を押す。
  4. データソースとして.odbc.iniファイルに記したデータベース、先ほど記した[My First Detabase]を選ぶ。「OK」を押して「次へ」。
  5. 「ユーザー認証のセットアップ」では何も入力せずに「接続のテスト」を押す。接続に成功すればそれを知らせる次のようなメッセージ・ボックスが表示される。そして「次へ」。
  6. 「データベースを保存したあとの処理を決定してください」では、そのままの状態で「完了」を押して大丈夫。データの登録やテーブルの作成は後からでも実行することができる。
  7. これで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

コメント

このブログの人気の投稿

Visual Studio 2019にはC++のためのフォームデザイナーがない件

10の補数と9の補数と2の補数と1の補数

LibreOffice 6 Calcでフォーム(ダイアログ)を作成してマクロで表示