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

Azure Data Factory映射数据流PostgreSQL jsonb列插入报错求助

问题描述

使用Azure Data Factory(ADF)映射数据流在两个PostgreSQL数据库间复制数据,目标表结构如下:

Create table mytable 
(
    id int,
    json_column jsonb
);

源库与目标库表结构完全一致。调试时限制仅复制一行数据(json列值为NULL),ADF自动生成的插入语句如下:

INSERT INTO "T_6726_7518bded039e4697aedcfafdd213e402" ("id","json_column","r0c0604bf127847bdac0e8012a40d8651") 
VALUES (123,NULL,8)

执行该语句时触发错误:

ERROR: column "json_column" is of type jsonb but expression is of type character
Hint: You will need to rewrite or cast the expression.

但相同语句在pgAdmin中可正常执行,询问ADF是否支持jsonb列及解决办法。

解决办法

  • 显式转换JSONB字段类型:在映射数据流中添加派生列转换,将jsonb列的NULL值显式转换为对应类型。可使用表达式 toJson(NULL) 或 cast(NULL as 'jsonb'),强制ADF识别字段类型,避免隐式转换错误。

  • 设置目标表JSONB列默认值:修改目标表,将json_column列的默认值设为NULL::jsonb,即使ADF传入的NULL被识别为字符类型,PostgreSQL会自动匹配类型:

    ALTER TABLE mytable ALTER COLUMN json_column SET DEFAULT NULL::jsonb;
    
  • 改用复制活动:替换映射数据流为ADF复制活动,复制活动对PostgreSQL jsonb类型的兼容性更好,通常能自动处理NULL值,无需额外转换。

  • 更新PostgreSQL驱动版本:检查ADF链接服务的PostgreSQL驱动版本,确保使用最新版本,旧版本可能存在jsonb类型的兼容性问题。

内容的提问来源于stack exchange,提问作者Mark Wojciechowicz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:12:50