不幸的是,我的数据库的数据模型必须改变,所以我正在寻找最简单的方法来迁移我的数据。
目前情况如何:
create table cargo{
id serial primary key,
person_id int,
weight_id float,
reps_id int
);
//skipping constraints declaration
然而事实上,每个人都能够提升不同的货物价值
我要做的是修改cargo
表并添加turn
表,如下所示:
create table cargo{
id serial primary key,
person_id int,
);
//skipping constraints declaration
create table turn{
id serial primary key,
cargo_id int,
weight float
);
通常我可以像这样迁移现有数据:
insert into turn (cargo_id, weight) select id, weight from cargo;
但是这样我失去了所有reps
reps
> 1
是否可以在select中创建insert,其中select将被调用reps
count次,而不需要编写脚本?
答案 0 :(得分:1)
尝试:
-- insert into turn (cargo_id, weight)
SELECT c.id, c.weight_id
FROM cargo c,
LATERAL (
SELECT * FROM generate_series(1, greatest( c.reps_id, 1 ) )
) xx;