在Redshift中将数据追加到JSON数组

时间:2018-09-06 09:17:50

标签: json amazon-redshift

我有一个Redshift表,其中的一列是JSON数组。我想将一些数据附加到该数组中。例如:

id | col1 | col2
1  | A    | {"key": []}
2  | B    | {"key": []}
3  | B    | {"key": ['A']}
4  | B    | {"key": ['A', 'B']}

我想创建一个像UPDATE <table> SET col2 = <something> where col1 = 'B'这样的语句,以便得到:

id | col1 | col2
1  | A    | {"key": []}
2  | B    | {"key": ['C']}
3  | B    | {"key": ['A', 'C']}
4  | B    | {"key": ['A', 'B', 'C']}

1 个答案:

答案 0 :(得分:0)

您必须编写自己的用户定义函数(UDF),传入列的当前值和要添加的元素,然后传回结果。

不过,您实际上应该尽可能避免在Amazon Redshift中使用JSON列。他们无法利用使Redshift强大的所有功能(列,SORTKEY等)。另外,您将遇到关系数据库的正常领域中不存在的此类问题。