目前我正在研究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格式以外的建议。
请为我提供上述问题的可能解决方案。
如果我有任何错误,请纠正我。
提前致谢,
答案 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()函数的字符串转换为整数。
祝你好运 - 马可