首页 > 解决方案 > 以json格式将一列数据复制到另一列

问题描述

我正在迁移一个应用程序。它具有 postgres 数据库版本 9.4.19。有一张表可以说 StudentData。早些时候,它有 4 列,即 Id、Name、Class、City。现在我创建了一列,即“信息”,它以 json 格式存储名称、类和城市,如下所示

{
  "STUDENT_NAME":["Tom","Sam","Mark"],
  "STUDENT_CLASS":[3,6,2],
  "STUDENT_CITY":["Newyork","London","London"]
}

现在我将以这种 json 格式存储任何新的传入数据,但在部署这个新结构之前,我想将现有列(上面提到的)数据迁移到 json 结构中的新列。我需要某种脚本或 sql 函数。我在 sql 脚本方面非常薄弱。
怎么做?请帮我。

编辑:感谢大家的宝贵意见,但我自己解决了这个问题,没有使用任何 json 函数。我已经通过 writen one cte 手动完成,然后通过手动放置 json 结构来更新列。

标签: sqljsonpostgresqlpostgresql-9.4

解决方案


我看到很少有函数可以在 json (json_agg & row_t_json) 中获取输出,并尝试使用它来获得类似的输出。请查看这是否是您要查找的内容: 在此处输入图像描述

查询参考:

with student as 
(
select 'Tom' as Name, 3 as Class, 'New York' as City union all
select 'Sam' as Name, 6 as Class, 'London' as City union all
select 'Mark' as Name, 2 as Class, 'London' as City 
)

select 
row_to_json(st_j) out_json
from
(
 select 
  json_agg(st.name) Student_Name, 
  json_agg(st.Class) Student_Class, 
  json_agg(st.City) Student_City
 from 
  student st
) st_j

小提琴网址: https ://dbfiddle.uk/?rdbms=postgres_9.5&fiddle=73dd0699461c8c2992e0d49da044fca3

注意:不了解 PostgreSQL,所以可能有更好的方法。


推荐阅读