You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PostgreSQL中将单表拆分为列数不同的多个关联子表

PostgreSQL单表拆分操作步骤

1. 新建子表

首先创建拆分后的子表,可根据实际业务需求调整字段类型、约束等配置:

-- 创建product_info表,trans_id设为主键
CREATE TABLE product_info (
    trans_id INT PRIMARY KEY,
    sku VARCHAR NOT NULL,
    product_class VARCHAR NOT NULL,
    size NUMERIC NOT NULL
);

-- 创建product_sales表,trans_id设为主键同时关联product_info主键保证数据一致性
CREATE TABLE product_sales (
    trans_id INT PRIMARY KEY REFERENCES product_info(trans_id),
    supplier VARCHAR NOT NULL,
    brand VARCHAR NOT NULL,
    sales INT NOT NULL
);

如果需要拆分3-4个子表,按照同样逻辑按业务属性划分字段创建对应表即可。

2. 从原宽表导入数据

将下方SQL中的original_wide_table替换为实际的原宽表名称,执行插入操作:

-- 导入数据到product_info
INSERT INTO product_info (trans_id, sku, product_class, size)
SELECT trans_id, sku, product_class, size
FROM original_wide_table;

-- 导入数据到product_sales
INSERT INTO product_sales (trans_id, supplier, brand, sales)
SELECT trans_id, supplier, brand, sales
FROM original_wide_table;

3. 数据校验

导入完成后执行以下语句校验数据完整性:

-- 统计原表和子表数据量,结果一致则导入正常
SELECT COUNT(*) FROM original_wide_table;
SELECT COUNT(*) FROM product_info;
SELECT COUNT(*) FROM product_sales;

也可以抽样对比指定trans_id对应的字段值,确保字段取值一致。

可选后续操作

校验无误后,可根据需求选择备份或删除原宽表。

内容的提问来源于stack exchange,提问作者chelseafc21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 21:15:05