DBeaver 在导入/导出时不保留主键
Posted
技术标签:
【中文标题】DBeaver 在导入/导出时不保留主键【英文标题】:DBeaver does not keep primary keys on import/export 【发布时间】:2016-08-08 19:42:15 【问题描述】:我正在使用 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);
源表架构
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
);
【问题讨论】:
【参考方案1】:我发现了一个使用 6.0.5 版本的技巧;执行以下步骤:
双击表名 然后选择Data
标签
然后单击灰色表格角(行序号顶部的那个)以选择所有行
然后右键单击相同的灰色桌角
然后选择Generate SQL
-> INSERT
菜单
将弹出一个包含INSERT
指令的窗口,包括id
(主键)。
ps:选择行的子集时,相同的菜单将仅适用于SONE SONG SONE
【讨论】:
我可以确认在 DBeaver 21.0.0 中仍然有效 记得在数据选项卡底部更改获取的行数并刷新。否则你可能会错过一些。【参考方案2】:当你去导出时,勾选Include generated column
选项,主键(自动递增)将包含在导出中。
查看更多详情:https://github.com/dbeaver/dbeaver/commit/d1f74ec88183d78c7c6620690ced217a52555262
我个人认为这需要更清楚,为什么他们首先排除它并不是良好的数据完整性。
【讨论】:
以上是关于DBeaver 在导入/导出时不保留主键的主要内容,如果未能解决你的问题,请参考以下文章
Win10安装DBeaver连接MySQL8导入和导出数据库详细教程
Win10安装DBeaver连接MySQL8导入和导出数据库详细教程
Linux debian安装DBeaver连接MySQL8导入和导出数据库详细教程