sql - 以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 结构来更新列。
解决方案
我看到很少有函数可以在 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,所以可能有更好的方法。
推荐阅读
- python - pygame " event " object has no attribute "pos"
- java - 如何在java(android studio)中添加逗号分隔
- c++ - 即使条件不满足 C++ 也无限循环
- mongodb - 如何注册不同集合的ID
- flutter - 为什么空列表在飞镖中返回大小 1?
- reactjs - 显示警告时如何使用 Create React App 网络 URL 找到
- javascript - 对 MongoDB 中的用户进行排序
- arduino - 在 Arduino 中的实例内创建实例
- python - 雪碧在pygame中没有向左移动
- angular - 在 Angular11 中使用 typescript-logging 将日志数据保存到文件中的问题