You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake数据库中如何修改JSON字段内的键名(将country改为COUNTRY)

Snowflake JSON键名修改方案

错误原因说明

你之前的SQL存在两个问题:

  • OBJECT_INSERT第一个参数传了T.RECORD:'country',取的是country键对应的值而非整个JSON对象,导致最终只修改了值而非调整键名
  • WHERE条件RECORD:"country" = 'country'只会匹配country值为字符串country的行,不符合全量修改的需求

通用兼容写法

所有Snowflake版本都支持的实现方案,逻辑是先新增大写COUNTRY键并绑定原值,再删除小写country键:

UPDATE "KAFKA_DB"."KAFKA_SCHEMA"."TARGET" T
SET T.RECORD = OBJECT_DELETE(
    OBJECT_INSERT(T.RECORD, 'COUNTRY', T.RECORD:country, TRUE),
    'country'
)
WHERE T.RECORD:country IS NOT NULL;

简洁写法(2022及之后版本支持)

如果你的Snowflake版本支持内置的OBJECT_RENAME函数,可以直接调用完成键名重命名:

UPDATE "KAFKA_DB"."KAFKA_SCHEMA"."TARGET" T
SET T.RECORD = OBJECT_RENAME(T.RECORD, 'country', 'COUNTRY')
WHERE T.RECORD:country IS NOT NULL;

操作建议

执行更新前建议先运行SELECT语句验证修改结果,避免误操作:

SELECT 
    ID,
    RECORD AS OLD_RECORD,
    OBJECT_DELETE(OBJECT_INSERT(RECORD, 'COUNTRY', RECORD:country, TRUE), 'country') AS NEW_RECORD
FROM "KAFKA_DB"."KAFKA_SCHEMA"."TARGET"
WHERE RECORD:country IS NOT NULL
LIMIT 10;

内容的提问来源于stack exchange,提问作者Austin Jackson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 11:39:03