【发布时间】:2021-09-14 08:47:11
【问题描述】:
我正在将 Postgres DB 迁移到 Snowflake 并面临下一个问题。我的输入是存储在s3 中的csv 文件,其中包含Postgres 表的数据。我想将 Postgres HSTORE 字段存储为雪花 Object 或 Variant。为了简化问题,我们可以想象下一个查询在从 s3 读取我们的 csv 数据后包含一个 hstore 字段,如下所示:'"User__id"=>"31486183"',我需要像 '{"User__id":"31486183"}' 这样的格式,Snowflake 将其理解为 JSON。例如:
select parse_json('"User__id"=>"31486183"')
抛出以下错误。
SQL 编译错误:位置 28 处的第 1 行语法错误意外 '=>'。位置 28 处的第 1 行语法错误意外'=>'。
我们想把那个表达式转换成另一个:
select parse_json('{"User__id":"31486183"}')
{ "User__id": "31486183" }
我发现的唯一解决方法是将 Postgres 端的 HSTORE 字段转换为 hstore_to_json 函数,但我无法使用这种方法来解决我的问题
【问题讨论】:
标签: postgresql type-conversion migration snowflake-cloud-data-platform hstore