如何使用Ora2Pg将单个源列映射为两个目标列?
使用Ora2Pg实现单源列到多目标列的映射方案
场景一:拆分源列到两个目标列
Ora2Pg的基础列映射规则不支持直接拆分,但可以通过自定义抽取查询绕开这个限制,完全可控:
- 针对Oracle源表,用字符串函数拆分
firstName列,写好自定义查询:SELECT -- 取第一个空格前的内容作为目标firstName SUBSTR(firstName, 1, INSTR(firstName, ' ') - 1) AS firstName, -- 取第一个空格后的内容作为目标lastName SUBSTR(firstName, INSTR(firstName, ' ') + 1) AS lastName, -- 别忘了加上其他需要同步的列 id, email, ... FROM your_source_table; - 在Ora2Pg配置里,把
TABLE参数替换成这个查询,或者用QUERY_FILE指定保存该查询的文件。工具会基于这个查询生成目标表的插入逻辑,自动把拆分后的字段对应到目标的两个列。
场景二:单源列映射到多个目标列
这个有两种简单实现方式:
方式一:自定义查询(最直接)
直接在抽取查询里重复选取源列,用别名对应不同的目标列:
SELECT lastUpdatedBy AS lastUpdatedby, lastUpdatedBy AS createdBy, -- 其他需要同步的列 id, firstName, ... FROM your_source_table;
方式二:配置文件规则(无需改查询)
如果不想写自定义查询,可在Ora2Pg的配置文件里组合使用两个参数:
# 先把源列映射到第一个目标列 COLUMN_RENAME = your_source_table.lastUpdatedBy:lastUpdatedby # 添加第二个目标列,默认值直接引用源列的值 ADD_COLUMN = your_source_table.createdBy:VARCHAR(100):DEFAULT lastUpdatedBy
注意要确保目标表的createdBy列允许设置默认值,工具生成的DDL和同步逻辑会自动处理赋值。
内容的提问来源于stack exchange,提问作者Cristina Rosca
相关产品推荐
相关产品推荐

