AWS DMS迁移中算术表达式转换规则的技术咨询
AWS DMS迁移中新增算术计算列的表达式可行性
在AWS DMS做数据库迁移时,需要给目标表新增一列,这列的值通过对源表字段做算术计算生成。目前只找到字符串拼接的示例,没找到数值计算相关内容,附上源表结构和转换规则JSON,想确认表达式$ID*1000+2是否可行,相关经验分享如下:
源表结构示例
CREATE TABLE USER_INFO ( ID INT PRIMARY KEY, FIRST_NAME VARCHAR(50), LAST_NAME VARCHAR(50), EMAIL VARCHAR(50), GENDER VARCHAR(50), IP_ADDRESS VARCHAR(20) );
DMS转换规则JSON片段
{ "rule-type": "transformation", "rule-id": "5", "rule-name": "5", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "source_database_name_goes_here", "table-name": "USER_INFO" }, "value": "new_column_name_for_target_table", "expression": "$ID*1000+2", // 疑问:这个表达式是否生效?$ID是源表的ID字段 "data-type": { "type": "integer", "length": 10 } }
答案及经验分享
- 表达式可行性:
$ID*1000+2这种算术表达式在AWS DMS的add-column转换规则里是完全可行的。 - 支持的运算类型:DMS转换表达式支持常见的算术操作,包括加减乘除(+、-、*、/)、取模(%)等,只要源字段是数值类型(比如这里的INT),直接用
$字段名引用就能参与计算。 - 数据类型注意事项:目标列的
data-type要和计算结果类型匹配,比如这里ID是INT,计算后还是整数,设置integer没问题;如果涉及小数计算,要把目标类型调整为decimal或float。另外要注意数值溢出问题,比如INT类型的最大值是2147483647,如果ID接近这个值,乘以1000会超出范围,这时要把目标列类型改成BIGINT。 - 测试建议:先在测试环境用小批量数据做迁移验证,确认计算结果符合预期,同时检查目标表的列数据是否正常写入,没有报错。
- 其他运算示例:更复杂的数值计算也支持,比如
$ID + $AGE(假设AGE是数值字段)、$SALARY * 1.1(涉及小数运算)等写法都能生效。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

