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

如何在PostgreSQL中规范化table1?拆分指定列实现目标结构

解决方案(基于PostgreSQL)

假设你的table1中error occured at列的内容是用固定分隔符(比如逗号、分号)拼接的多个时间/错误发生点,无需lead/lag函数的话,用string_to_array配合unnest就能实现拆分并同步到table2,具体SQL示例如下:

  • 基础拆分同步语句:
INSERT INTO table2 (对应字段1, error_time, 对应字段2)
SELECT
    t1.对应字段1,
    unnest(string_to_array(t1."error occured at", '你的分隔符')) AS error_time,
    t1.对应字段2
FROM table1 t1;
  • 如果拆分后的内容有多余空格,可加trim处理:
INSERT INTO table2 (对应字段1, error_time, 对应字段2)
SELECT
    t1.对应字段1,
    trim(unnest(string_to_array(t1."error occured at", '你的分隔符'))) AS error_time,
    t1.对应字段2
FROM table1 t1;

说明

  1. 把语句中的对应字段1/对应字段2替换成table1和table2中实际匹配的字段名
  2. 把'你的分隔符'替换成error occured at列中实际用来分隔多个时间的字符(比如, 、; 或者换行符E'\n')

如果是MySQL环境,可使用JSON_TABLE实现类似拆分逻辑,示例如下:

INSERT INTO table2 (对应字段1, error_time, 对应字段2)
SELECT
    t1.对应字段1,
    jt.error_time,
    t1.对应字段2
FROM table1 t1
JOIN JSON_TABLE(
    CONCAT('["', REPLACE(t1."error occured at", '你的分隔符', '","'), '"]'),
    '$[*]' COLUMNS(error_time VARCHAR(255) PATH '$')
) jt;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:33:19