我是一个新的PostgreSQL用户,正在将一些旧的mySQL数据迁移到PostgreSQL。通过这种迁移,我也在考虑改变数据的存储方式。具体来说,我需要了解如何将我的一个列的数据类型从一个数字更改为一个由三个数字组成的数组。我有一个记录我比赛的美国足球统计数据的数据库。我有一个标有"receiving_yards“的列,它的类型是Int。最近,我对我的游戏的统计数据进行了改进,并希望将"receiving_yards“列从一个整数分解为三个整数,每个整数对应于字段的一部分,例如:深、中、边线。因此,"receiving_yards“列的类型为Int、Int、Int。问题是如何处理所有旧数据,因为它不能传输到这种格式,而且所有新数据都将使用这种新的数组格式。
我仍然希望能够聚合"receiving_yards“列的总数,包括数组的内容,但是我希望能够区分字段的每个部分的统计数据,这与数组的索引相对应。
我的最初解决方案是简单地将所有旧数据更新为数组格式,例如Int,然后在聚合中出现异常。这就是解决办法吗?还是应该重新考虑存储数据的方式?提前谢谢。
存储数据的时间
receiving_yards
100
25
30如何存储新数据
receiving_yards
[25, 25, 50]
[5, 5, 15]
[0, 0, 30]发布于 2022-09-21 19:58:09
最近,我对我的游戏的统计数据进行了改进,实际上我想将"receiving_yards“列从一个整数除以三个整数,每个整数对应于字段的一部分,例如:深、中、边线。
我只会做三列。当您有任意数据要存储时,PostgreSQL数组和JSON非常有用。在这种情况下,您有三个固定的值,传统的表和列工作得更好。
把它们加起来,就能得到总收货场。您甚至可以通过使receiving_yards成为生成列来保留它。
receiving_yards integer generated always as (deep + middle + sideline) stored或者你可以做一个视图。
create view view_name as
select *, (deep + middle + sideline) as receiving_yards
from the_tablehttps://stackoverflow.com/questions/73806113
复制相似问题