kettle怎样同步文件夹下最新的那个文件

kettle怎样同步文件夹下最新的那个文件,第1张

项目需要增量同步数据,实现如下逻辑:

现将表中的数据全部同步到目标表,然后再将全部数据的最新时间,更新到时间同步配置表中。

*** 作步骤如下:

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12164081.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存