libreoffice base import table 数据类型问题

libreoffice base import table data type problem

我正在将 table 从 LibreOffice Calc 导入新的嵌入式 Libreoffice 基础数据库。我 select 数据,复制并粘贴它,弹出向导,我 select 使用第一行作为列名。

然后我 select 所有字段并移动到导入向导的第三步。我可以右键单击我的 ID 字段并将其设为主键,很好。问题是,如果我将字段数据类型设置为 double 或 varchar 以外的任何类型,导入就会崩溃并出现错误 "incorrect type for setstring"。我想使用整数和日期类型 - 我该如何导入它们?

如果我将所有字段保留为 double 或 varchar 并稍后尝试编辑 table,它不会让我更改数据类型。如果我先定义 table 然后追加记录,也会出现同样的问题。

如果我从头开始创建一个新数据库,这会很容易,但我有很多现有记录要导入。我需要保留密钥以与其他 table 建立关系。

我已经尝试了嵌入式的 HSQLDB 和 firebird。

这个错误阻止我放弃 Microsoft Access 以支持 libreoffice base。谁能提出解决方法?


编辑

感谢 Jim K 的回复,这解决了一半的问题。

我发现了两个有问题的列 - 一个日期字段和一个布尔值字段。尽管 Calc 确实知道我的日期字段是一个日期,但它会导致导入到 Base 的过程崩溃,如前所述。然后我告诉 Calc 将日期显示为 YYYY-MM-DD,并且导入到 Base 的工作非常顺利。

下一个问题是布尔 (YES/NO) 字段。 Calc 中的空白单元格将 OK 导入为布尔值 false。我尝试过的其他任何东西 - 是、否、真、假、1、0 - 都导致导入失败并显示错误消息 "incorrect type for setstring".

将布尔数据从 Base 移回 Calc 显示的值为 TRUEFALSE,因此看起来这就是 Base 导入所期望的。这适用于 HSQLDB 引擎但不适用于 Firebird Embedded。

The bug has already been reported,所以您只需要等待修复即可。

同时,可以编写一个 Calc 宏来从电子表格中读取值,并 运行 一个 SQL UPDATE 语句来将正确的值导入 Base。我的回答 包含一些入门代码。

不过,还有更简单的方法。创建一个使用 HSQLDB 的临时基础文件,并将数据从 Calc 导入其中。然后,关闭 Calc 并打开 Firebird Embedded 和 HSQLDB Base 文件。将 table 从 HSQLDB Base window 拖到另一个 window,无缝导入。