繁体   English   中英

libreoffice基础导入表数据类型问题

[英]libreoffice base import table data type problem

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

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

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

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

我已经尝试过嵌入 HSQLDB 和 firebird。

这个错误阻止了我放弃 Microsoft Access 转而使用 libreoffice 基础。 任何人都可以建议解决方法吗?


编辑

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

我发现了两个有问题的列 - 日期字段和 boolean 字段。 尽管 Calc 确实知道我的日期字段是一个日期,但它会使导入到 Base 崩溃,如所述。 然后我告诉 Calc 将日期显示为 YYYY-MM-DD 并且导入到 Base 的工作完美。

下一个问题是 boolean (YES/NO) 字段。 Calc 中的空白单元格将 OK 导入为 boolean false。 我尝试过的其他任何事情 - YES、NO、TRUE、FALSE、1、0 - 都导致导入到 base 时出现错误消息“setstring 的类型不正确”。

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

该错误已经被报告,所以您需要做的就是等待它被修复。

同时,可以编写一个 Calc 宏来读取电子表格中的值并运行 SQL UPDATE语句以将正确的值放入 Base。 在这里的回答有一些代码可以开始。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM