首页 文章

Azure数据工厂v2不是Null列在接收器中

提问于
浏览
1

我正在尝试Azure Data Factory v2,我想将数据从SQL源传输到Oracle接收器 .

我的问题是,我在Oracle表中有几个Not Null列,它们指定了数据集加载到Oracle的日期和时间 . 但是这些列在SQL表中是不存在的,所以当我想启动管道时,我得到的错误是这些列在Oracle接收器中不能为空 .

我现在的问题是,是否有可能在管道运行期间人为地添加这些列,以便这些列由数据工厂填充?
我可以使用存储过程或自定义活动吗?
或者我是否必须创建一个Powershell脚本"hardcodes"我想要添加到源的值?

2 回答

  • 1

    您可以在ADFv2中使用针对复制活动中的源数据集的查询来完成此操作以插入值 .

    使用表ex_employee,在每个数据库中使用以下配置:

    源表(SQL):

    ID int not null,
    Name nvarchar(25) not null
    

    接收表(Oracle):

    ID number(p,0) not null,
    Name nvarchar2(25) not null,
    CreatedDate timestamp not null
    

    在ADF中的“复制”活动的“源”配置中,您将选择“使用查询”下的“查询”选项,并输入查询,例如:

    SELECT ID, Name, CURRENT_TIMESTAMP AS CreatedDate FROM ex_employee
    

    这将获取SQL表中的现有值,并在结果集中插入一个默认值,然后可以将其插入到Oracle接收器中 .

  • 1

    此列是否具有默认值?你可以添加默认值到这个列,然后尝试?我不熟悉oracle管道数据,但是在下面的示例中,类似的方法是向非空列添加默认值 .

    drop table ex_employee
    /
    create table ex_employee (id number(1) null ,name varchar2(100)  default 'A' not null )
    /
    insert into ex_employee(id)
    select 1 from dual
    /
    commit
    /
    
    selecT * from ex_employee where id=1
    

相关问题