Azure 数据工厂 v2 接收器中的非空列

Azure Data Factory v2 Not Null Columns in sink

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

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

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

此列是否有默认值?您可以将默认值添加到此列然后尝试吗?我不熟悉 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

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

使用table ex_employee,在每个数据库中配置如下:

来源table(SQL):

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

接收器 table(甲骨文):

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

在 ADF 中 Copy activity 的 Source 配置中,您将 select Use Query 下的 Query 选项,然后输入查询,例如:

SELECT ID, Name, CURRENT_TIMESTAMP AS CreatedDate FROM ex_employee

这将从您的 SQL table 中获取现有值,并将默认值插入到结果集中,然后可以将其插入到您的 Oracle 接收器中。