很奇怪的问题,在使用nifi的时候碰到的,这里是用NIFI,把数据从postgresql中同步到mysql中,
首先postgresql中的源表,中是没有create_time这个字段的,但是同步的过程中报错了.
报错的内容是说,目标表中有个create_time字段,这个字段是必填的,但是传过来的flowfile文件中,的数据没有这个create_time这个字段.所以就报错了.
实际上源表和目标表中都没有这个字段,最后也解决了,大概步骤:
主要看这个putdatabaserecord这个组件,对应的参数配置,可以看到,可以根据需要调整一下,
这里:Unmatched Column Behavior这个理的值原来其他的都是:
可以看到其他的都是Fail on Unmatched Columns,这个时候会报错,所以,这里修改成
Ignore Unmatched Columns就可以了.再去试就可以了.
2.如果上面的办法不行,那么需要,把源表和目标表,使用Navicat的,数据同步工具,让他自动同步一遍,然后再用nifi同步,这样是因为,同步的时候,会自动把原来的maysql中的目标表,删除掉,然后重新创建这个表,有可能之前的目标表有隐藏的create_time这一列.这里其实就是重新创建表以后再试.
3.如果上面的办法还是不行,那么再去调整一下,GenerateTableFetch ExecuteSql PutDatabaseRecord这3个处理器就可以了.当然具体怎么调参数,需要碰到问题去看,
这里我用第一个办法就解决了.