解析时,从具有数组数据类型的snowflake加载数据时出错



我正在尝试从snowflake读取数据并将其加载到其他存储位置。我用雪花jdbc驱动3.12.9来读取数据,用jackson库(2.10)来反序列化。

在其中一个用例中,我使用具有数组数据类型的列。下面是create table语句:create table test_table (array1 ARRAY)。我通过以下命令将数据加载到表中。insert into test_table (array1) select array_construct(1,2,3,null)。当我们对上述数据运行select查询时,数组中的空值被转换为未定义。例如,select array1 from test_table,我们得到的输出为"[1, 2, 3, undefined]"

当用jackson反序列化数据时,我得到错误:Unrecognized token 'undefined': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false'),因为未定义不是一个有效的json令牌。

null到undefined的转换只发生在数组元素为空的情况下,而不发生在整个数组为空的情况下。

一种解决方案是在雪花端编写自定义函数,并在查询数据时使用它,但随后我们必须在所有客户端添加此函数,我们不希望添加此函数成为阻塞。

有更好的方法来解决这个问题吗?任何建议、帮助都会很有帮助。

我找不到一个简单的答案。因此,在构造数组时,我必须使用COALESCE替换null,如:

select to_json(array_construct(coalesce(col1, '"null"'), coalesce(col2, '"null"')))

最新更新