现将表中的数据全部同步到目标表,然后再将全部数据的最新时间,更新到时间同步配置表中。
*** 作步骤如下:
1)主作业主要转换(获取最后更新时间、增量同步记录数据并更新同步时间到配置表)
2)同步数据并更新记录最新时间到同步表中
阻塞数据知道步骤都完成,是为了等待需要同步的数据全部同步完成后,在执行更新记录最新时间到同隐并步表灶亏迹中。
PS:阻塞数据 组件需要有后续步骤连接,否则不能空告选择出需要阻塞的步骤。
打开kettle,定义数据源1
kettle中定义两个数据源,其中“DS_ERP”是来源数据库,“DS_ODS”是用于同步的数据库
END
新建转换,用于同步某一张表
1
新建一个转换(执行SQL脚本--->>表输缺卜袜入--->>表输出)
执行SQL脚本:删除DS_ODS库中已经存在的数据
表输入:查询DS_ERP库中的数据
表输出:将“表输入”中弊虚的结果输出到DS_ODS库中
2
执行SQL脚本:删除DS_ODS库中已经存在的数据
${qy_table_name}:这个是参数,指同步的表名
3
表输入:查询DS_ERP库中的数据
${qy_table_name}:这个是参数,指同步的表名
4
表输出:将“表输入”中的结果输出到DS_ODS库中
${qy_table_name}:这个是参数,伏激指同步的表名
END
新建转换,用于获取需要同步的表名
1
新建一个转换(文本文件输入--->>复制结果到记录)
文本文件输入:通过读取指定txt文件,获取所有要同步的表。(这里也可以通过其他方式获取,例如通过sql查询数据库系统表)
2
指定txt文件路径
3
定义txt文件中的字段名,同上一步中定义的参数名
4
txt中定义需要同步的表,每行一张表名
END
新建任务,实现批量同步
新建任务,调用前面的转换
其中,同步表的转换需要设置循环执行,并将获取到的表名传递到转换内部
////// 遍历文件夹中所有的目标文件
///
/// 父文件路径
/// 目唤脊标文件名称
private void Swap(string path, string file)
{
string[] Floders = Directory.GetDirectories(path)
string[] Files = Directory.GetFiles(path, file)
foreach (string str in Files)
{
//str就你你要找的xml文件,要怎么处理自己去搞
MessageBox.Show(str)
}
foreach (string str in Floders)
{
Swap(str, file)
}
}
调用如下和雹渗,假设你肆亩的ccmfile文件夹在C盘根目录
string path = "C:\\ccmfile"
Swap(path, "info.xml")
MessageBox.Show("完成!")
S
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)