为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:麒麟V10
【CPU】:
【问题描述】*:之前做过oracle迁移dm,在oracle与DM数据库中,均存在这张表,由于迁移后在原数据库中又新增了字段name,并且已经存在数据了,我现在需要根据表的主键ID,将oracle数据库中该表的name字段的值,迁移到dm数据库中对应主键ID下的name字段中。我使用了DM数据迁移工具,选择了用一条或者多条SQL指定要迁移的对象,语句为:select id,name from table where name is not null。但是迁移报错:违反Check约束[D_SYS_C000001],因为table中有另外一个不为空的字段,但是这个字段在dm数据库中是有值的,我也不需要迁移这个字段。为何会报这个错误?我现在想迁移,只能使用select * from table where name is not null,使用这个语句不会报错,但是可能会覆盖一些其他的字段。
目前有个替换的方式,在业务低峰期将这张表迁移过来,目标端迁移到映射的bak表中,然后有两个选择:数据量大的话将表改名,数据量小的话写一个UPDATE XXX SQL语句更新一下原表。
我用kettle,只要是结构化数据库随便迁。先配一个kettle转换的模板,然后写个脚本根据表名用模板复制替换表名生成kettle的转换,然后命令行模式用依次执行就可以了。如果你源和目标的字段名称或类型不同,要做一下映射和类型转换。如果日期和字符串的转换等。另外在目标库建表时最好比源库字段长度大一些。祝你好运