接收器中的Azure Data Factory v2非空列

时间:2018-10-24 07:58:27

标签: sql oracle powershell azure-data-factory-2

我正在试用Azure Data Factory v2,并且希望将数据从SQL源传送到Oracle接收器。

我的问题是,我的Oracle表中有几个Not Null列,这些列指定例如数据集加载到Oracle中的日期和时间。但是,这些列在SQL表中不存在,因此,当我要启动管道时,会收到以下错误:在Oracle接收器中这些列不能为null。

我的问题是,是否可以在管道运行期间人为添加这些列,以便这些列由数据工厂填充?
我可以为此使用存储过程或自定义活动吗?
 还是我必须创建一个Powershell脚本来“硬编码”我想添加到源代码中的值?

2 个答案:

答案 0 :(得分:1)

此列是否具有默认值?您可以将默认值添加到此列,然后尝试吗?我不熟悉oracle管道数据,但是下面的示例采用了类似的方法,将默认值添加到非null列中。

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

答案 1 :(得分: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接收器中。