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

问题描述 投票:1回答:1

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

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

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

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

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

此错误使我无法放弃Microsoft Access而是使用libreoffice base。谁能建议解决方法?


编辑

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

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

下一个问题是布尔(YES / NO)字段。 Calc中的空白单元格将OK导入为布尔值false。我尝试过的其他任何操作-是,否,真,假,1、0-均使导入崩溃,错误信息为“ setstring类型不正确”。

import libreoffice base
1个回答
0
投票

将布尔数据从Base移回Calc时,其值显示为TRUEFALSE,因此看来这正是Base导入所期望的。对于HSQLDB引擎,这是正确的,但对于Firebird Embedded,则不能。

The bug has already been reported,因此您所要做的就是等待它修复。

同时,可以编写Calc宏以从电子表格中读取值,并运行SQL UPDATE语句以将正确的值输入Base。我的答案here有一些入门代码。

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

© www.soinside.com 2019 - 2024. All rights reserved.