我正在试用Azure Data Factory v2,并且希望将数据从SQL源传送到Oracle接收器。
我的问题是,我的Oracle表中有几个Not Null列,这些列指定例如数据集加载到Oracle中的日期和时间。但是,这些列在SQL表中不存在,因此,当我要启动管道时,会收到以下错误:在Oracle接收器中这些列不能为null。
我的问题是,是否可以在管道运行期间人为添加这些列,以便这些列由数据工厂填充?
我可以为此使用存储过程或自定义活动吗?
还是我必须创建一个Powershell脚本来“硬编码”我想添加到源代码中的值?
答案 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接收器中。