oracle - 目标表中的默认值

标签 oracle oracle11g informatica informatica-powercenter

我有一些映射,其中业务实体是在转换逻辑之后填充的。行量偏高,并且有相当多的业务属性默认为某些静态值。

因此,为了减少从映射推送的数据,我在目标表上创建了“default”子句,并停止从映射本身提供数据。现在,当我在“正常”模式下运行 session 时,效果很好。这有效地为我提供了目标表行,其中一些列由映射提供,其余列根据表 DDL 上的“默认”子句获取值。

但是,由于我们正在处理较高的卷数,因此我想以批量模式运行 session (目标表上没有预先存在的索引)。

一旦我将 session 切换到批量模式,这个特殊功能(默认值)就会停止工作。因此,我在目标列中得到 NULL 值,而不是定义的“默认”值。

我想知道 -

  1. 这是预期的行为吗?
  2. 如果没有,我是否在某处遗漏了某些配置?
  3. 我应该购买前往 Oracle 的机票吗?还是 Informatica?

我的配置 -

Informatica 9.5.1 64 位, 和 Oracle 11g r2 (11.2.0.3) 运行于 Solaris(SunOS 5.10)

期待在这里提供帮助...

最佳答案

可能是预期的行为。

Informatica 中的批量模式似乎使用 Oracle 中的“直接路径”API(例如,参见 https://community.informatica.com/thread/23522)

从这个文档( http://docs.oracle.com/cd/B10500_01/server.920/a96652/ch09.htm ,搜索字段“直接路径上的默认值”)我了解到:

Default column specifications defined in the database are not available when you use direct path loading. Fields for which default values are desired must be specified with the DEFAULTIF clause. If a DEFAULTIF clause is not specified and the field is NULL, then a null value is inserted into the database.

这可能是此行为的原因。

关于oracle - 目标表中的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17181678/

相关文章:

sql - 关系术语 : foreign key source, 目的地?

javascript - Oracle APEX 中 apex.server.process 的安全性

java - JDBC取消Oracle存储过程调用

java - 为什么循环在被动 informatica java 转换中不起作用?

mysql - 根据混合日期填写缺失的行

Hadoop 可以替代 SSIS、Informatica 等 ETL 工具吗?

c# - 将 .net 4.0 中的 Entity Framework 与 Oracle 数据库一起使用 - 可能吗?

sql - 正则表达式中的 '^\d+\D+$' 是什么意思

plsql - 执行一个oracle包函数

SQL在单个命令中在表中添加列和注释