- 一、需求描述
- 数据存档,存档后的数据不能修改
- 需要通过 输入(如表输入) 的数据 作为参数 批量执行操作
- 因为存档,所以保存个格式要求是json
- 二、开发环境
- mysql8.0.12
- kettle 9.x
- 三、实现步骤
- step1、新建 转换 trans_update_sql, 增加 表输入和 执行sql脚本 组件
- step1、新建 转换 trans_update_sql, 增加 表输入和 执行sql脚本 组件
- step2: 编辑 表输入,获取 源数据
- step3: 编写 执行sql脚本【此是关键步骤】
- 此处我们先执行sql,只用ghorlandName 更新 json_land(此是json_land 字段类型是 text,随后再调整)
- 表结构
- 执行前数据 json_land
- 执行前数据 json_land
- step4:保存执行转换【里程碑一步:执行sql脚本搞定】
- step5:将数据保存为json格式
- 修改 执行sql脚本内容修改 查询json格式
补充知识:sql转换数据为json参考学习update F_plantVargl set json_land= ( SELECT CONCAT('[', GROUP_CONCAT(JSON_OBJECT( 'GHorLandId',GHorLandId,'GHorLandName',GHorLandName,'GHorLandTypeId',GHorLandTypeId, 'ghorlandIntro', ghorlandIntro)), ']') as json FROM cloudfarmuserbasedb0.f_ghorland where ghorlandId = ? ) where ghorlandId = ?
- step6:再次执行转换,出现如下结果,则恭喜你,这一部分搞定!!!
- 转换出现异常,由于 GROUP_CONCAT 转换时 mysql默认 最大值1024字节,所以如果转换内容过长,则会出现异常
- 异常错误
Row XXX was cut by GROUP_CONCAT()
- 查看最大长度(当前会话的,全局使用 @@global.group_concat_max_len)
select @@group_concat_max_len;
- 设置最大长度
SET group_concat_max_len=102400;
- 解决效果
补充知识学习: GROUP_CONCAT异常处理
- 异常错误
- 此处我们先执行sql,只用ghorlandName 更新 json_land(此是json_land 字段类型是 text,随后再调整)
- 四、写在最后
以上内容仅供参考学习,如果错误请批评指正。
kettle之执行sql脚本及保存数据格式为json
最新推荐文章于 2024-07-26 22:09:19 发布