我使用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
);发布于 2019-06-01 21:07:13
我发现了一个使用6.0.5版本的技巧;执行以下步骤:
Data选项卡Generate SQL -> INSERT菜单包含INSERT指令(包括id (主键))的窗口将弹出。
PS:当选择行的子集时,相同的菜单也只适用于那些行。

发布于 2021-04-22 13:32:15
当您进行导出时,请选中Include generated column选项,主键(自动递增)将包含在导出中。
有关更多详细信息,请参见此:https://github.com/dbeaver/dbeaver/commit/d1f74ec88183d78c7c6620690ced217a52555262
就我个人而言,我认为这需要更清楚,他们为什么在一开始就排除它是不良好的数据完整性。

发布于 2022-06-06 03:04:47
到目前为止,DBeaver版本22.0.5必须选择包含生成的列为true,如下面的屏幕快照所示,它将导出主/生成列。

https://stackoverflow.com/questions/36670770
复制相似问题