LibreOffice の Base と Firebird [Firebird]
この記事は Firebird Advent Calendar 2019 https://qiita.com/advent-calendar/2019/firebird と LibreOffice Advent Calendar 2019 の https://adventar.org/calendars/4230 の 14日目の記事です
昨年の Firebird Advent Calendar で Meiji さんが言及 http://blog.kimuradb.com/?eid=877556 してますが、LibreOffice 6.2 から Base の埋め込みデータベースとして Firebird が選択できるようになりました。
(そして、LibreOffice 6.3 からデフォルトで Firebird が選ばれているようになりました)
Firebird 3.0 の embeded サーバーが使われているようです
Base の odb ファイルは zip ファイル形式になっていて、埋め込みデーターベースに Firebird を選択した場合、その zip ファイルを解凍すると Firebird のバックアップファイルが取得できます。
左のように LibreOffice からテーブルデータビューでデータを登録した odb ファイルから以下のような操作をしてみました
- odb ファイルをunzip
- gbak でリストア
- isql で接続して select
日本語の文字列も問題なく select できました。
ただ LibreOffice で table1 と、小文字のテーブルを作成してしまったので、ダブルクォートでクォートする必要がありました。
昨年の Firebird Advent Calendar で Meiji さんが言及 http://blog.kimuradb.com/?eid=877556 してますが、LibreOffice 6.2 から Base の埋め込みデータベースとして Firebird が選択できるようになりました。
(そして、LibreOffice 6.3 からデフォルトで Firebird が選ばれているようになりました)
Firebird 3.0 の embeded サーバーが使われているようです
Base の odb ファイルは zip ファイル形式になっていて、埋め込みデーターベースに Firebird を選択した場合、その zip ファイルを解凍すると Firebird のバックアップファイルが取得できます。

- odb ファイルをunzip
- gbak でリストア
- isql で接続して select
nakagami@ubuntu1804:~$ cd basefiles/ nakagami@ubuntu1804:~/basefiles$ unzip samplebase.odb Archive: samplebase.odb extracting: mimetype creating: reports/ inflating: content.xml inflating: database/firebird.fbk creating: forms/ creating: Configurations2/ inflating: settings.xml inflating: META-INF/manifest.xml nakagami@ubuntu1804:~/basefiles$ gbak -c -v -user SYSDBA -password masterkey database/firebird.fbk /tmp/firebird.fdb gbak:opened file database/firebird.fbk gbak:transportable backup -- data in XDR format gbak: backup file is compressed gbak:backup version is 10 gbak:created database /tmp/firebird.fdb, page_size 8192 bytes gbak:started transaction gbak:restoring domain RDB$1 gbak:restoring domain RDB$2 gbak:committing metadata gbak:restoring table table1 gbak: restoring column id gbak: restoring column s gbak:restoring generator RDB$1 value: 3 gbak:committing metadata gbak: restoring index RDB$PRIMARY1 gbak:restoring data for table table1 gbak: 3 records restored gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak: restoring privilege for user SYSDBA gbak:creating indexes gbak:committing metadata gbak: activating and creating deferred index RDB$PRIMARY1 gbak:adjusting views dbkey length gbak:updating ownership of packages, procedures and tables gbak:adding missing privileges gbak:adjusting system generators gbak:finishing, closing, and going home gbak:adjusting the ONLINE and FORCED WRITES flags nakagami@ubuntu1804:~/basefiles$ isql -user sysdba -password masterkey /tmp/firebird.fdb Database: /tmp/firebird.fdb, User: SYSDBA SQL> show tables; table1 SQL> show table table1; There is no table TABLE1 in this database SQL> show table "table1"; id INTEGER Not Null Identity (by default) s VARCHAR(100) Nullable CONSTRAINT INTEG_1: Primary key (id) SQL> select * from "table1"; id s ============ =============================================================================== 1 あいうえお 2 かきくけこ 3 さしすせそ SQL>
日本語の文字列も問題なく select できました。
ただ LibreOffice で table1 と、小文字のテーブルを作成してしまったので、ダブルクォートでクォートする必要がありました。
コメント 0