如果greenplum表中还没有数据,那么需要先进行一次全量同步。
前提,源表和目标表都要有可区分记录新旧的子段,比如自增id,时间戳等,建议用时间戳,id总有爆的一天。
1.新建转换,ctrl+s设置名字为set_variable(用于存放目标数据库表中最新的时间或id)。
切换到主对象树,新建DB连接,连接greenplum数据库,连接类型选择PostgreSql(greenplum底层是PostgreSql)。
切换到核心对象,找到“输入”,新建“表输入”,编辑步骤,填写数据库连接,sql语句为 select 用于区分记录新旧的字段名 from 表名 order by 用于区分记录新旧的字段名 desc limit 1 (举例:select insert_time from acd_filehuman order by insert_time desc limit 1) 。
点击预览,看能不能查出一个值,然后点击确定。
在核心对象中,找到“作业”,新建“设置变量”,按住shirt键,点击“表输入”到“设置变量”建立连接。
编辑“设置变量”,点击“获取子段”,填写变量名,点击“确定”。ctrl+s保存。
2.新建转换,ctrl+s设置名字为mysql_to_gp(用于正式同步数据)
切换到主对象树,建立到mysql的连接,建立到greenplum的连接(同上),编辑greenplum的连接,点击选项,添加命名参数:characterEncoding,值:utf8,点击确认,避免同步到greenplum的数据出现中文乱码。
切换到核心对象,新建“表输入”和“表输出”,连接他们
编辑“表输入”,数据库连接选择mysql的连接,点击“获取sql查询语句”,弹出框选择则“否”,在sql后面添加查询条件(只查新数据),添加的语句为 where 用于区分记录新旧的字段名 > '${前面设置的变量名}' (举例:where INSERT_TIME > '${gp_insert_time}'),注意不要把单引号丢了,点击确定。
编辑“表输出”,数据库连接选择到greenplum的连接,选择要输出到的表,提交记录数量默认1000即可,太小会同步很慢,太大可能会爆jvm内存。选中“指定数据库子段”,点击下边“数据库子段”,点击“获取子段”,点击“确定”。
3.点击左上角:文件-新建-作业。找到:核心对象-通用。新建一个“START”,两个“转换”,一个“成功”,依次连接他们。
编辑第一个“转换”,点击“浏览”,找到set_variable文件,点击确定。
编辑第一个“转换”,点击“浏览”,找到mysql_to_gp文件,点击确定。
OK
可以运行这个作业同步数据了。

747

被折叠的 条评论
为什么被折叠?



