开发者社区> 问答> 正文

请问多表合并时候增加源表字段导致channel挂起的问题

我在使用otter做多表数据的合并,100张表tb_table_0到tb_table_99的数据合并到另外一个数据库的tb_table_all表中,两个数据库的使用的schema一样。当我对这100个表增加了一个字段之后,otter挂起,日志中显示

2017-03-29 23:35:59.283 [pipelineId = 9,taskName = transformWorker] WARN c.a.o.s.a.i.setl.zookeeper.termin.WarningTerminProcess - nid:1[9:setl:com.alibaba.otter.node.etl.transform.exception.TransformException: no support ddl for [test.tb_table_1] to [test.tb_table_all] , sql :ALTER TABLE tb_table_1 ADD COLUMN REMARK VARCHAR(100) NULL com.alibaba.otter.node.etl.transform.exception.TransformException: no support ddl for [test.tb_table_2] to [test.tb_table_all] , sql :ALTER TABLE tb_table_2 ADD COLUMN REMARK VARCHAR(100) NULL

请问有什么方法能够解决这种修改表字段的问题么?

原提问者GitHub用户 xmas120654

展开
收起
大圣东游 2023-06-21 16:25:06 61 0
2 条回答
写回答
取消 提交回答
  • 差异的库表结构目前不支持

    原回答者GitHub用户agapple

    2023-06-21 17:37:56
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    当使用otter进行多表数据合并时,如果你对表增加了一个字段,otter会报错提示不支持DDL。这是因为otter的增量同步模式是基于表结构的,不支持动态修改表结构。

    为了解决这个问题,可以考虑以下几种方法:

    手动修改表结构:你可以手动在目标数据库的tb_table_all表中增加这个字段,以保持表结构一致。然后重新启动otter同步任务,让其继续进行数据合并。

    使用其他工具:Otter并不支持动态修改表结构,但你可以考虑使用其他ETL工具,如DataX、Sqoop或自定义脚本来实现表结构的变更。

    使用临时表进行数据迁移:你可以创建一个临时表tmp_table_all,在tmp_table_all上增加字段,然后将tb_table_0到tb_table_99的数据先导入到tmp_table_all表中。最后,再将tmp_table_all表重命名为tb_table_all,完成数据迁移。

    无论采用哪种方法,使用前请确保数据已备份,并进行充分的测试和验证,以避免数据丢失或出现其他问题。

    2023-06-21 16:49:45
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载