在Oracle ODI中读取TXT文件时,如何添加当前日期列?
在Oracle ODI中为TXT源映射添加当前日期列的实现方法
以下是几种实用的实现方案,可根据你的业务场景选择:
1. 映射表达式直接调用内置日期函数
这是最常用的快速实现方式,仅需目标表预留日期列:
- 打开对应ODI映射,确认目标表已创建日期类型列(例如
LOAD_DATE)。 - 在映射画布中,双击目标表
LOAD_DATE列的映射字段,打开表达式编辑器。 - 输入对应数据库的日期函数:若目标是Oracle数据库,直接写
SYSDATE;其他数据库可使用CURRENT_DATE或GETDATE()(依数据库类型调整)。 - 保存映射并执行,数据插入时该列会自动填充当前系统日期。
2. 在TXT源数据存储中添加派生列
如果希望读取TXT文件时就附带日期字段,可在源定义中配置:
- 进入ODI的模型模块,找到TXT文件对应的数据源存储。
- 切换到加载标签页,在“派生列”区域点击添加按钮,新增一列(命名如
LOAD_DATE)。 - 在该列的“表达式”栏填写
SYSDATE(或对应数据库的日期函数),保存配置。 - 返回映射,将源的
LOAD_DATE列直接映射到目标表的对应字段即可。
3. 使用ODI变量传递当前日期
适合批量任务中需要统一控制日期值的场景:
- 在ODI的变量模块,创建日期类型变量(例如
VAR_LOAD_DATE)。 - 设置变量的“刷新查询”为
SELECT SYSDATE FROM DUAL(Oracle环境),并勾选“刷新后保存值”。 - 在映射中,将目标表的日期列映射设置为
:#VAR_LOAD_DATE(遵循ODI变量引用语法)。 - 若通过ODI包执行映射,需在包中先添加“刷新变量”步骤,确保变量获取最新日期后再运行映射。
4. 利用目标表列的默认值
如果目标表是Oracle数据库,可直接通过表结构设置实现:
- 在目标数据库中,修改表的日期列(如
LOAD_DATE),设置默认值为SYSDATE。 - 在ODI映射中,不为该列配置任何映射(保持“未映射”状态)。
- 执行映射时,数据库会自动为该列填充当前日期,无需ODI额外处理。
内容的提问来源于stack exchange,提问作者yalda sana
相关产品推荐
相关产品推荐

