SSブログ

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 のバックアップファイルが取得できます。
basetable.png左のように LibreOffice からテーブルデータビューでデータを登録した odb ファイルから以下のような操作をしてみました
- 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) 
共通テーマ:日記・雑感

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

Facebook コメント