首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理旧数据上更改列数据类型的PostgreSQL

问处理旧数据上更改列数据类型的PostgreSQL
EN

Stack Overflow用户
提问于 2022-09-21 19:37:04
回答 1查看 21关注 0票数 0

我是一个新的PostgreSQL用户,正在将一些旧的mySQL数据迁移到PostgreSQL。通过这种迁移,我也在考虑改变数据的存储方式。具体来说,我需要了解如何将我的一个列的数据类型从一个数字更改为一个由三个数字组成的数组。我有一个记录我比赛的美国足球统计数据的数据库。我有一个标有"receiving_yards“的列,它的类型是Int。最近,我对我的游戏的统计数据进行了改进,并希望将"receiving_yards“列从一个整数分解为三个整数,每个整数对应于字段的一部分,例如:深、中、边线。因此,"receiving_yards“列的类型为Int、Int、Int。问题是如何处理所有旧数据,因为它不能传输到这种格式,而且所有新数据都将使用这种新的数组格式。

我仍然希望能够聚合"receiving_yards“列的总数,包括数组的内容,但是我希望能够区分字段的每个部分的统计数据,这与数组的索引相对应。

我的最初解决方案是简单地将所有旧数据更新为数组格式,例如Int,然后在聚合中出现异常。这就是解决办法吗?还是应该重新考虑存储数据的方式?提前谢谢。

存储数据的时间

代码语言:javascript
复制
receiving_yards
100
25
30

如何存储新数据

代码语言:javascript
复制
receiving_yards
[25, 25, 50]
[5, 5, 15]
[0, 0, 30]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-21 19:58:09

最近,我对我的游戏的统计数据进行了改进,实际上我想将"receiving_yards“列从一个整数除以三个整数,每个整数对应于字段的一部分,例如:深、中、边线。

我只会做三列。当您有任意数据要存储时,PostgreSQL数组和JSON非常有用。在这种情况下,您有三个固定的值,传统的表和列工作得更好。

把它们加起来,就能得到总收货场。您甚至可以通过使receiving_yards成为生成列来保留它。

代码语言:javascript
复制
receiving_yards integer generated always as (deep + middle + sideline) stored

或者你可以做一个视图。

代码语言:javascript
复制
create view view_name as
select *, (deep + middle + sideline) as receiving_yards
from the_table
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73806113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档