获取以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脚本如下