将数据加载到表中时,出现以下错误:
ERROR: row is too big: size 8680, maximum size 8160
Run Code Online (Sandbox Code Playgroud)
该表中有 1000 多列,这似乎是问题所在。一般的互联网建议是“重构!” 或“正常化!”。例如,这篇文章。不幸的是,我不相信这样的建议适用于我的情况。
该表用于存储从设备收集的数据。作为分析的一部分,设备会生成 PNG 图像。PNG 包含 1024 个像素。每个像素都有一个关联的数值。与像素数据一起的是与分析相关的各种其他领域。把桌子分成几部分真的没有意义。这些字段都与正在分析的特定对象在逻辑上相关联。
Postgres 似乎不喜欢每个像素都有自己的字段。该表具有以下形式的字段:pixel_1
, pixel_2
, ..., pixel_1024
。注意,这是从通常的例子有着根本的不同phone_number_1
,phone_number_2
等每个像素是由于其位置的一个唯一的对象。 pixel_1
具有不同的位置,pixel_123
并且每个像素都有一个相关联的值。它们之间的共同点是它们都用于描述相同的分析对象。它们是 PNG 中给出的视觉表示的定量模拟。
我希望我已经把上下文说清楚了。我试图将问题归结为它的本质,但我怀疑可能需要进行一些澄清。如果需要澄清,请告诉我。
编辑:作为一项实验,我尝试将像素分解为单独的表格。这似乎是唯一可能的重构方式。但是 1024 列会产生相同的错误。