一、Informatica 数据迁移计划
1. 选择源表和目标表
1.1源表:ODS_AC01
CREATE TABLE ODS_AC01
(
AAC001 VARCHAR2(150),
AAC002 VARCHAR2(150),
AAC003 VARCHAR2(150)
);
COMMENT ON COLUMN ODS_AC01.AAC001 IS '姓名';
COMMENT ON COLUMN ODS_AC01.AAC002 IS '身份证号码';
COMMENT ON COLUMN ODS_AC01.AAC003 IS '地址';
1.2 目标表:EWD_AC01
CREATE TABLE EDW_AC01
(
PSN_UUID VARCHAR2(32) NOT NULL,
PSN_IDCARD VARCHAR2(20),
PSN_NAME VARCHAR2(150),
PSN_ADDR VARCHAR2(150),
PSN_BIR DATE
);
COMMENT ON COLUMN EDW_AC01.PSN_UUID IS '人员编号';
COMMENT ON COLUMN EDW_AC01.PSN_IDCARD IS '身份证号码';
COMMENT ON COLUMN EDW_AC01.PSN_NAME IS '人员姓名';
COMMENT ON COLUMN EDW_AC01.PSN_ADDR IS '地址';
COMMENT ON COLUMN EDW_AC01.PSN_BIR IS '生日';
2. 分析源表和目标表关系映射
(1)源表ODS_AC01表数据需要迁移至目标表EWD_AC01,表结构完全不同,需要做字段转换
(2)EDW_AC01.PSN_BIR(生日) 是日期格式,我们通过源表的AAC002(身份证号码)可以提取。
(3) EDW_AC01.PSN_UUID(人员编号) ,类型VARCHAR2,长度32,此处需要使用UUID,可以通过JAVA代码生成实现。
3. 创建源表和目标表关系映射
3.1 导入源表和目标表后创建映射,创建完成后拖拽源表和目标表到映射
4. 编写生成UUID的JAVA代码
package com.powersi.util;
import java.util.UUID;
public class GenerateUUID {
public static String generateUuid(){
return (UUID.randomUUID().toString().replaceAll("-","")).toUpperCase();
}
public static void main(String[] args) {
String uuid = generateUuid();
System.out.println(uuid);
}
}
运行代码结果:
906F1101F440432AA915C709B4E5349C
5. 编辑人员信息表映射
5.1 JAVA代码组件应用
(1)映射中加入JAVA代码组件,选择的时候选择 被动,点击确定
5.2 JAVA代码转换组件设置
(1)重命名转换名称:生成UUID
(2)端口添加,在输出组中点击添加字段,名称PSN_NO,数据类型:String ,精度:32,输出打上勾
(3)JAVA代码选项中,点击导入包,输入以下代码:
import java.util.UUID;
(4)JAVA代码选项中,点击在输入行,输入以下代码后点击编译,日志框中输出Java 代码编译成功后点击确定。
PSN_NO = (UUID.randomUUID().toString().replaceAll("-","")).toUpperCase();
(5)最后用线将源表、JAVA代码组件、目标表连接起来
5.3 字段映射及组件连线
(1)首先拉入表达式转换组件
(2)用线连接源表的AAC002(身份证号码)字段到表达式组件,双击表达式进行编辑,新增字段 PSN_BIR,类型设置 date/time类型,只给输出打钩。然后编辑表达式,输入 TO_DATE(SUBSTR(AAC002,7,8),‘YYYYMMDD’),然后点击验证,出现表达式解析成功后点击确定。
TO_DATE(SUBSTR(AAC002,7,8),'YYYYMMDD')
(3)将源表字段连接到表达式组件,然后新字段,表达式转换如下图所示,然后用线条连接表达式和目标表,排列所有图标。
最终连线:
排列图标后如图所示:
6. 建立会话、工作流、启动任务
6.1 创建好任务后编辑任务映射。
6.2 创建工作流
6.3 启动工作流
在数据库中查看数据,发现数据已割接完成!