首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DBeaver在导入/导出时不保留主键

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

Stack Overflow用户
提问于 2016-04-16 23:00:38
回答 3查看 11.4K关注 0票数 13

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

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

是否有一种方法可以让DBeaver插入主键,而不是让它在导入/导出到数据库表时生成?

目标表模式

代码语言:javascript
复制
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);

源表模式

代码语言:javascript
复制
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
);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-01 21:07:13

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

  • 双击表名
  • 然后选择Data选项卡
  • 然后单击灰色表格角(行序号的顶部),以选择所有行。
  • 然后右击相同的灰色表角。
  • 然后选择Generate SQL -> INSERT菜单

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

PS:当选择行的子集时,相同的菜单也只适用于那些行。

票数 16
EN

Stack Overflow用户

发布于 2021-04-22 13:32:15

当您进行导出时,请选中Include generated column选项,主键(自动递增)将包含在导出中。

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

就我个人而言,我认为这需要更清楚,他们为什么在一开始就排除它是不良好的数据完整性。

票数 13
EN

Stack Overflow用户

发布于 2022-06-06 03:04:47

到目前为止,DBeaver版本22.0.5必须选择包含生成的列为true,如下面的屏幕快照所示,它将导出主/生成列。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36670770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档