PostgreSQL创建一个包含841列的表

时间:2014-10-18 15:51:51

标签: sql postgresql weka

我使用PostgreSQL作为SQL-Server来保存用于在Weka(机器学习工具)中训练模型的数据集。

然后,Weka通过在每列中创建一个特征来读取表格。对于此项目,数据由24x35像素图像组成,其中每个像素都是一个特征。因此,我必须创建一个包含841列(840像素值,1个id(主键))的表。

图像是灰度图像。因此每个像素值的范围从0到255.因此,我想将其保存为每像素/列一个整数或每像素/列一个字节。然而," id" -column必须是整数。

设置该大小的表的最佳/最简单方法是什么?

2 个答案:

答案 0 :(得分:1)

下面列出了1个关于最大列的参考答案,以及另一个切换到1到多个的选项。

最大列数和类型

以下答案提供了有关您应该检查的内容的全面信息。

What is the maximum number of columns in a PostgreSQL select query

更改为使用1到多

缺点是每次像素数(图像大小)发生变化时都必须重新创建数据库模式。

相反,您可以创建一对多的关系并拥有一个表格:

image_id, pixel_number, value

因此,对于具有N个像素的一个图像,您将拥有:

1, 1, value
1, 2, value
....
1, N, value

答案 1 :(得分:1)

所有图片是否彼此不同?我的意思是,如果它们中的大部分是相同的,可能你应该创建第二个表来单独存储所有的图片,然后你可以选择创建1到1或1到1的表,如下所示:

create table picuture
(
  pic_id integer,
  pic_value <whatevertypeyouwant>,

  pk_picture primary key pic_id
);

-- option 1
create table your_table
(
  id integer,
  pic_id_001 integer,
  pic_id_002 integer,
  ...
  pic_id_840 integer,

  pk_your_table primary key id
);

-- option 2
create table your_table
(
  id integer,
  pic_id integer,

  pk_your_table primary key id, pic_id
);