PostgreSQL如何拆分逗号分隔的列数据后插入另一张表
该需求完全可以在PostgreSQL中实现,仅需借助内置函数即可完成,无需额外插件。
实现步骤
步骤1:创建目标表(若Table2未提前创建)
CREATE TABLE Table2 ( ID INT, Username VARCHAR(50) );
步骤2:执行拆分插入操作
核心通过string_to_array将逗号分隔的字符串转为数组,再通过unnest将数组展开为多行,关联原表ID后直接插入目标表即可:
INSERT INTO Table2 (ID, Username) SELECT t1.ID, unnest(string_to_array(t1.Username, ',')) AS Username FROM Table1 t1;
可选优化:处理字段前后多余空格
如果原始Username字段的逗号分隔值之间存在空格(例如格式为UserA, UserB, UserC),可以搭配trim函数去除多余空格,避免插入脏数据:
INSERT INTO Table2 (ID, Username) SELECT t1.ID, trim(unnest(string_to_array(t1.Username, ','))) AS Username FROM Table1 t1;
结果验证
插入完成后执行以下查询,即可看到符合预期的拆分结果:
SELECT * FROM Table2;
内容的提问来源于stack exchange,提问作者John Sari
相关产品推荐
相关产品推荐

