snowflake-cloud-data-platform - Snowlfake JSON 键值更改,需要 SQL
问题描述
如何将键更改为其他名称?从country
到COUNTRY
ID RECORD 2 { "country": "England", "id": "100200", "status": "morestatus" } 3 { "country": "AMERICA", "id": "100300", "status": "morestatus" } 1 { "country": "UK", "id": "100100", "status": "somestatus" } ID RECORD 2 { "COUNTRY": "England", "id": "100200", "status": "morestatus" } 3 { "COUNTRY": "AMERICA", "id": "100300", "status": "morestatus" } 1 { "COUNTRY": "UK", "id": "100100", "status": "somestatus" }
我试过了,但似乎这适用于“国家”的价值观,并且不能将国家更改为 COUNTRY
UPDATE "KAFKA_DB"."KAFKA_SCHEMA"."TARGET" T SET T.RECORD =OBJECT_INSERT(T.RECORD:'country','COUNTRY', TRUE) WHERE RECORD:"country" = 'country';
解决方案
您可以嵌套 OBJECT_DELETE 和 OBJECT_INSERT 以添加具有旧值的键并删除该键。
create temp table t1 as select parse_json('{ "country": "England", "id": "100200", "status": "morestatus" }') as V;
select * from t1;
select object_delete(object_insert(v, 'COUNTRY', v:country), 'country') from t1;
要保留更改,只需执行更新:
update t1 set v = object_delete(object_insert(v, 'COUNTRY', v:country), 'country');
推荐阅读
- python - 基于密钥的 CSV 到 JSON 转换
- javascript - React - 为什么我的链接在我的按钮下方呈现?
- visual-studio-code - 无法删除终端配置文件面板
- r - 使用 glmLasso 函数在 LASSO 模型中包含固定效果 (R)
- python - 如何构建具有多个输入的 TensorFlow 模型?
- firebase - 如何使用 Firebase Cloud Function for Flutter 应用程序在 get 函数中等待写入函数
- c++ - 将二维数组传递给 C++ 中的函数
- javascript - 为什么在测试组件时这种方法会成功更新模拟组件,而另一种方法则不能?
- serial-port - 串行到以太网转换器直接连接到路由器/交换机
- java - 需要使用 OpenAPI 3.0 记录码头服务器 REST API