DBeaver 在导入/导出时不保留主键

Tim*_*gel 9 dbeaver

我正在使用 DBeaver 将数据从 Postgres 迁移到 Derby。当我使用 DBeaver 中的向导直接从一个表转到另一个表时,会生成 Derby 中的主键而不是插入。这会导致后续表的外键出现问题。

如果我生成 SQL,主键是 SQL 语句的一部分,并已正确插入。但是,以这种方式处理的行太多。

有没有办法让 DBeaver 插入主键,而不是在直接导入/导出到数据库表时生成主键?

目标表的架构

CREATE TABLE APP.THREE_PHASE_MOTOR (
    ID BIGINT NOT NULL DEFAULT GENERATED_BY_DEFAULT,
    VERSION INTEGER NOT NULL,
    CONSTRAINT SQL130812103636700 PRIMARY KEY (ID)
);

CREATE INDEX SQL160416184259290 ON APP.THREE_PHASE_MOTOR (ID);
Run Code Online (Sandbox Code Playgroud)

源表的架构

CREATE TABLE public.three_phase_motor (
    id int8 NOT NULL DEFAULT nextval('three_phase_motor_id_seq'::regclass),
    "version" int4 NOT NULL,
    CONSTRAINT three_phase_motor_pkey PRIMARY KEY (id)
)
WITH (
    OIDS=FALSE
);
Run Code Online (Sandbox Code Playgroud)

Sar*_*rke 21

当你去导出时,检查Include generated column选项,主键(自增)就会包含在导出中。

有关更多详细信息,请参阅此:https://github.com/dbeaver/dbeaver/commit/d1f74ec88183d78c7c6620690ced217a52555262

我个人认为这需要更加明确,为什么他们首先排除它是因为数据完整性不好。

包括生成的列

  • 它不起作用。没有索引,也没有主键,也没有外键。 (3认同)

adr*_*rhc 10

我发现了一个使用 6.0.5 版本的技巧;执行以下步骤:

  • 双击表名
  • 然后选择Data标签
  • 然后单击灰色表格角(行顺序号顶部的那个)以选择所有行
  • 然后右键单击相同的灰色表格角
  • 然后选择Generate SQL->INSERT菜单

将弹出一个INSERT包含id(主键)指令的窗口。

PS: when selecting a subset of rows the same menu would work for only those too

在此处输入图片说明

  • 我可以确认在 DBeaver 21.0.0 中仍然有效 (2认同)

mon*_*yfy 8

从现在的 DBeaver 版本 [22.0.5] 开始,您必须选择“包括生成的列”为 true,如下面的屏幕截图所示,它将导出主/生成的列。

DBeaver 选择主列/生成列 [22.0.5]