Sql 如何用另一个表中的值替换具有逗号分隔数组的列中的值?

Sql 如何用另一个表中的值替换具有逗号分隔数组的列中的值?,sql,amazon-redshift,Sql,Amazon Redshift,我有两张桌子,像: 表1: 表2: 如何替换表2中的segmentid值,使其看起来像: idx | segmentids -------------------------+---------------------------------------- f9b6d54b-c646-4bbb-b0ec | [Eateries,Car Accessories,Healthcare,Electronics] asd7a0s9-c6

我有两张桌子,像:

表1:

表2:

如何替换表2中的segmentid值,使其看起来像:

       idx               |            segmentids
-------------------------+----------------------------------------
 f9b6d54b-c646-4bbb-b0ec | [Eateries,Car Accessories,Healthcare,Electronics]
 asd7a0s9-c646-asd7-b0ec | [Eateries,Car Accessories]
 gd3355ff-cjr8-assa-fke0 | [Eateries,Electronics]
 laksnfo3-kgi5-fke0-b0ec | [Electronics]

我尝试使用java代码替换后端中的值,但速度非常慢。

在PostgreSQL 9.3或更高版本中可以使用横向联接和拆分字符串,但红移中不支持横向联接。
不幸的是,规范化是我在这里看到的唯一有用和有效的方法。如果我做了一个错误的假设,请评论,我将重新关注我的答案。

分段ID的数据类型是什么?据我所知,Redshift不支持数组类型。答案是,在Redshift中执行此操作比在Java中更痛苦,因为您的数据未规范化。请将CSV数据分开,并将每个值放在自己的行中。在Redshift.DynamicSQL或函数调用中,我看不到一个很好的方法来实现这一点。但正如其他人所建议的那样,数据设置为badDatatype for column仅为varchar。table1有多大?
       idx               |            segmentids
-------------------------+----------------------------------------
 f9b6d54b-c646-4bbb-b0ec |         [aaa,bbb,ccc,ddd]
 asd7a0s9-c646-asd7-b0ec |         [aaa,bbb]
 gd3355ff-cjr8-assa-fke0 |         [aaa,ddd]
 laksnfo3-kgi5-fke0-b0ec |         [ddd]
       idx               |            segmentids
-------------------------+----------------------------------------
 f9b6d54b-c646-4bbb-b0ec | [Eateries,Car Accessories,Healthcare,Electronics]
 asd7a0s9-c646-asd7-b0ec | [Eateries,Car Accessories]
 gd3355ff-cjr8-assa-fke0 | [Eateries,Electronics]
 laksnfo3-kgi5-fke0-b0ec | [Electronics]