2023年11月09日

CALCからBASEテーブルへのインポートエラーはレコードサイズが原因だった

FirebirdをDBに使用しているBASEファイルへのインポートでエラーが表示されたので調査

CALCシートからBASEテーブル欄へドラッグ&ドロップでテーブル作成とデータインポートを行う作業中にエラー発生。
列で言うとAからCV列までの100列をテキスト形式で取り込もうとしていたのだが、エラー表示されキャンセルされてしまう。
CALCの取り込みセル範囲を変えて60列程度にするとエラーにならない。
取り込み列数に上限があるのか?と悩んでいたが、「出ているエラーメッセージ」をよく見ると!
*new record size of 66446 bytes is too big とメッセージにあるように、1レコードのサイズが大きすぎるよ!ということらしい。それじゃ、リミット値は幾つまでOKなのか?ということで調べてみるとFirebird関連のWEB中に「64Kバイトがリミットです」との表示を発見
確かに上記の処理でも列数を1つ減らしてAK64項目(BL列)までだと、すんなりインポート処理が正常終了する。
BASEのインポートウィザードで指定する際の「長さ」を初期値の255から適正なサイズに変更する事で取り込み列数を増やせる事を確認した。
全データ項目を長さ255のテキストで取り込もうとしていた事が原因とも言えますね。

***** 以下がエラーメッセージ ******
firebird_sdbc error:
*unsuccessful metadata update
*new record size of 66446 bytes is too big
*TABLE テーブル1
caused by
'CREATE TABLE "テーブル1" ("ID" INTEGER NOT NULL,"AK1" VARCHAR(255),"AK2" VARCHAR(255),"AK3" VARCHAR(255),"AK4" VARCHAR(255),"AK5" VARCHAR(255),"AK6" VARCHAR(255),"AK7" VARCHAR(255),"AK8" VARCHAR(255),"AK9" VARCHAR(255),"AK10" VARCHAR(255),"AK11" VARCHAR(255),"AK12" VARCHAR(255),"AK13" VARCHAR(255),"AK14" VARCHAR(255),"AK15" VARCHAR(255),"AK16" VARCHAR(255),"AK17" VARCHAR(255),"AK18" VARCHAR(255),"AK19" VARCHAR(255),"AK20" VARCHAR(255),"AK21" VARCHAR(255),"AK22" VARCHAR(255),"AK23" VARCHAR(255),"AK24" VARCHAR(255),"AK25" VARCHAR(255),"AK26" VARCHAR(255),"AK27" VARCHAR(255),"AK28" VARCHAR(255),"AK29" VARCHAR(255),"AK30" VARCHAR(255),"AK31" VARCHAR(255),"AK32" VARCHAR(255),"AK33" VARCHAR(255),"AK34" VARCHAR(255),"AK35" VARCHAR(255),"AK36" VARCHAR(255),"AK37" VARCHAR(255),"AK38" VARCHAR(255),"AK39" VARCHAR(255),"AK40" VARCHAR(255),"AK41" VARCHAR(255),"AK42" VARCHAR(255),"AK43" VARCHAR(255),"AK44" VARCHAR(255),"AK45" VARCHAR(255),"AK46" VARCHAR(255),"AK47" VARCHAR(255),"AK48" VARCHAR(255),"AK49" VARCHAR(255),"AK50" VARCHAR(255),"AK51" VARCHAR(255),"AK52" VARCHAR(255),"AK53" VARCHAR(255),"AK54" VARCHAR(255),"AK55" VARCHAR(255),"AK56" VARCHAR(255),"AK57" VARCHAR(255),"AK58" VARCHAR(255),"AK59" VARCHAR(255),"AK60" VARCHAR(255),"AK61" VARCHAR(255),"AK62" VARCHAR(255),"AK63" VARCHAR(255),"AK64" VARCHAR(255),"AK65" VARCHAR(255), PRIMARY KEY ("ID"))'

まとめ
1.Firebirdでテーブルを作成する際には1レコードのサイズに制限がある
2.推測であるが1列あたり 長さを255にすると1,022byte で換算されていくようである
3.ほぼ全て列で長さを255にすると65列(A列〜BM列の範囲)でサイズオーバーとなった
4.列数の制限ではないので、多くの列をインポートする際は、列の長さをデータ長に合わせて適正に小さくすることで取り込み可能列を増やすことができる(1レコードのサイズ合計は64Kバイトまで)


バージョン: 6.2(x64)
OS:Windows 10
タグ:トラブル
posted by LibreOffice Users Group at 22:31 | Comment(0) | TrackBack(0) | Base | このブログの読者になる | 更新情報をチェックする

2023年11月01日

法人への導入テストは最新バージョンの1つ前のバージョンを利用しましょう

法人に限ったことではない話ですが、「LibreOfficeの動作テストを行っています」という場合
最新バージョンをダウンロードしてテストする方法ではバグだらけで使えない!という判断になりがちです。

LibreOfficeなどのOSSは最新バージョンが一番不安定と思った方が良いです。
2023年11月1日時点ですと、バージョン7.6.2が最新版で7.5.7がひとつ前のバージョンになっています。
この場合、導入テスト版としては7.5.7を採用するのが無難です。

バージョンの7.5.7でいう、最後の数字、この場合末尾の7が7回のマイナー更新が行われたという意味なので
バグ対応が進んでいるものと考えられるのが理由です。
また、
7.5.7の7.5系でテストしてみた後、実際の導入機には最新の7.6.7などの7.6系を入れたくなりますが、これもお勧めしません。
7.5系の安定版を基礎に7.6系は開発されているハズなのですが
上位互換が正しくおこなわれるとは限らない事を肝に命じておく必要があるからです。

導入する際のバージョン管理についてお話ししました。

posted by LibreOffice Users Group at 20:21 | Comment(0) | TrackBack(0) | LibreOffice | このブログの読者になる | 更新情報をチェックする

2022年09月25日

入力完了時にTABキーを使うとカーソルは下ではなく右に移動します

CALCの入力確定時のカーソル移動について
カーソル移動の話ですので、参考知識として掲示します。(Excelも同じ挙動になっていたと思います)

入力完了時にエンタキーではなくTABキーを使うとカーソルは下ではなく右に移動します
TABキーで右にどんどん移動していき最終項目のデータ確定時にだけエンターキーを押すと入力開始列までジャンプして戻ります。

例えばA列1行目から1行から右に入力を続ける場合、確定をエンタキーでなくTABキーでカーソル移動を右に続けることができます。
TABキーで入力を続け、最終項目の入力完了時にのみエンタキーを押すとA列2行目にジャンプで戻ることができて非常に便利です。
※特に入力項目が横にズラーッと続くようなデータ入力作業時には威力を発揮します。

エンタキー押下でサッとA列までカーソルが戻るのを見ていると、データ入力作業でイライラしている気分を少しスカッとさせてくれます。
タグ:使い方
posted by LibreOffice Users Group at 22:44 | Comment(1) | TrackBack(0) | Calc | このブログの読者になる | 更新情報をチェックする
スポンサードリンク
スポンサードリンク