場景:源資料庫表為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應該有進行轉換處理。