informatica数据迁移之Sybase2Oracle

来源:互联网 发布:js json 遍历 编辑:程序博客网 时间:2024/05/23 16:45

获取以Sybase为源或目标的表,修改表结构

      1、源表很容易找到


目标表就杂乱无章了


2、获取以Sybase为目标库的表

        首先查看Sybase下相关库的链接


然后导出所有工作流xml文件,提取目标映射



接着导出所有mapping xml文件根据映射名提取的目标表才是Sybase下特定模式的目标表


3、源和目标表提取完后修改xml配置文件

   字段类型的修改:

           str = str.replace("DATATYPE =\"datetime\"","DATATYPE =\"date\"");  
            str = str.replace("DATATYPE =\"time\"","DATATYPE =\"date\"");   
            str = str.replace("DATATYPE =\"char\"", "DATATYPE =\"varchar2\""); 
            str = str.replace("DATATYPE =\"varchar\"", "DATATYPE =\"varchar2\"");
            str = str.replace("DATATYPE =\"int\"", "DATATYPE =\"number(p,s)\"");   
            str = str.replace("DATATYPE =\"numeric\"", "DATATYPE =\"number(p,s)\""); 
            str = str.replace("DATATYPE =\"decimal\"", "DATATYPE =\"number(p,s)\"");
            str = str.replace("DATATYPE =\"integer\"", "DATATYPE =\"number(p,s)\"");  
            str = str.replace("DATATYPE =\"smallint\"", "DATATYPE =\"number(p,s)\""); 
            str = str.replace("DATATYPE =\"tinyint\"", "DATATYPE =\"number(p,s)\""); 
            str = str.replace("DATATYPE =\"bit\"", "DATATYPE =\"number(p,s)\"");  
            str = str.replace("DATATYPE =\"number\"", "DATATYPE =\"number(p,s)\"");

 偏移量的修改:


OFFSET(N)=OFFSET(N-1)+LENGTH(N-1);

PHYSICALOFFSET=PHYSICALOFFSET(N-1)+PHYSICALLENGTH(N-1)

日期类型的LENGTH \   PHYSICALLENGTH都设为19,精度SCALE设为0

数据库信息也做相应修改


修改后导入选择替换规则

表结构就算修改完了;

4、导入源和目标XML后导出mapping修改源表所对应的Source Qualifier 字段类型

str = str.replace("DATATYPE =\"integer\"", "DATATYPE =\"decimal\"");否则修改连接后,会因为字段类型错误而导致映射无效



5、最后修改关系连接,导出所有session,必须是在修改并替换了表结构及mapping之后



修改完后导入替换,基本完事

最后因为客户端不能逐个导出xml文件,导成一个又会丢失信息不便解析,批量导出文件shell脚本如下



原创粉丝点击