如何在vertica数据库中存储整数数组?

时间:2017-09-21 07:16:04

标签: mysql sql database vertica

目前我正在研究vertica数据库。 我在一列中存储整数数组时遇到问题。我通过csv导入了数据值。

我使用以下代码创建表。

CREATE TABLE testing_table_1 (email varchar,name varchar,gen int,yob int,ct int,cy int,a varchar(65000),b varchar(65000),c varchar(65000));

我使用以下代码导入数据。

COPY testing_table_1 from '/home/naresh/Desktop/bigfile.csv' parser fcsvparser();

我的示例CSV格式如下所示。

ghchnu@tly.org.cn | Donald Garcia | 2 | 2003 | 21947 | 91 | 241,127,225,68,162 | 4,84,63,69,15 | 32,44,15,31
rlmx@jyqewy.biz   | Charles Brown | 2 | 2012 | 22218 | 45 | 127,156,186,136,242 | 49,69,14,80,95,1 | 39,36,38,40,20

第7,第8和第9列以字符串的格式存储。 但我想要的是,我希望它们以整数格式存储。

由于字符串格式,我无法使用“IN”查询执行整数操作组合。

我不想在vertica中使用flex-table格式。 提供除flex-table格式以外的建议。

请为我提供上述问题的可能解决方案。

如果我有任何错误,请纠正我。

提前致谢,

1 个答案:

答案 0 :(得分:2)

Vertica是一个基于SQL的真实关系数据库。

那些实际上没有列数可变的行 - 这就是使用数组的原因。 你需要做的是从中做出:

[...] 91 | 241,127,225,68,162 | 4,84,63,69,15 | 32,44,15,31

此:

[...] 91 | 1 | 241 |   4 |  32
[...] 91 | 2 | 127 |  84 |  44
[...] 91 | 3 | 225 |  63 |  15
[...] 91 | 4 |  68 |  69 |  31
[...] 91 | 5 | 162 |  15 |(null)

查看SPLIT_PART()函数;您可能希望以1,2,3,4和最后5作为第三个参数运行它,并使用该数字作为您在上面第二个显示列中看到的键。要将结果列作为整数,将来自SPLIT_PART()函数的字符串转换为整数。

祝你好运 - 马可