向Snowflake表插入JSON时PARSE_JSON报无效表达式错误如何处理?
问题原因
Snowflake对VALUES子句的语法有明确限制,仅支持常量值、NULL或标量常量表达式,不允许在VALUES内部直接调用系统内置函数(比如PARSE_JSON),这就是你触发编译错误的核心原因。
解决方案
你可以选择以下任意一种方式修改SQL:
- 方案1:使用
INSERT ... SELECT语法替代VALUES,在SELECT块中调用PARSE_JSON函数
insert into realtime_kpi_feature_list_map (kpi_id, feature_list_id, config) select 1, 10, parse_json('{"b":1,"a":2}');
如果需要插入多行数据,可以搭配UNION ALL实现:
insert into realtime_kpi_feature_list_map (kpi_id, feature_list_id, config) select 1, 10, parse_json('{"b":1,"a":2}') union all select 2, 11, parse_json('{"c":3,"d":4}');
- 方案2:直接在
VALUES中使用带JSON类型标注的字面量,无需调用PARSE_JSON函数
insert into realtime_kpi_feature_list_map (kpi_id, feature_list_id, config) values (1, 10, '{"b":1,"a":2}'::JSON);
内容的提问来源于stack exchange,提问作者Vlad Aleshin
相关产品推荐
相关产品推荐

