场景:源数据库表为mysql的其中有json字段,通过kettle 查询出来 插入到目标数据库 postgresql中,对应的表中也有json字段。。但是报错,提示kettle查询出来是varchar的的字段,无法插入到目标数据库中。
1、创建测试表。
CREATE TABLE t3 ( id int, name JSON );
2、测试mysql
使用mysql,字段类型无论使用String还是Binary类型数据都可以正常插入mysql表中的json字段,如下图所示:
3、测试postgres
1)字段类型设置为String,无法正常插入,表输出报错,如下图所示:
2)字段类型设置为Binary,依然无法正常插入,表输出报错,如下图所示:
4、错误信息丢给GPT寻转答案
5、根据gpt建议进行测试,动态构造sql语句&动态执行。如下图所示:
保存&点击运行,数据正确插入postgresql数据库。
查看数据T3表,数据已经正确被写入,如下图所示:
6、写在最后
本人在DBeaver中直接执行INSERT INTO public.t3 (name) VALUES ('{"name":"java小金刚"}');是可以正常插入到json字段的,猜测DBeaver应该有进行转换处理。