我使用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
);
答案 0 :(得分:3)
导出时勾选Include generated column
选项,主键(自增)会被包含在导出中。
查看更多详情:https://github.com/dbeaver/dbeaver/commit/d1f74ec88183d78c7c6620690ced217a52555262
我个人认为这需要更清楚,为什么他们首先排除它是不好的数据完整性。
答案 1 :(得分:0)
我发现使用6.0.5版本的技巧;请执行以下步骤:
Data
标签Generate SQL
-> INSERT
菜单带有INSERT
指令(包括id
(主键)的窗口将弹出。
PS:选择行的子集时,相同的菜单也仅适用于那些行