繁体   English   中英

根据文本文件输入元数据进行数据库插入

[英]Make a DB INSERT based on Text File Input metadata

我正在开发ETL,并且必须执行一些例程来对其进行监视。

开始时,我必须在DB上的INSERT中创建一条记录,以通知文件名和开始过程的日期时间。 该查询将返回记录的PK,并且必须将其存储。 当该文件的ETL完成时,我必须更新该记录,以告知ETL成功完成及其结束过程的日期时间。

我使用文本文件输入来查找与其正则表达式匹配的文件,并将其“其他输出字段”添加到流中。 但是我找不到一个仅可用于第一条记录并且将对INSERT执行SQL命令的组件。

您可以同时使用“标识最后一行”和“过滤行”,因此您将仅保留输入中的一行(仅过滤最后一行)。 您将在“过滤器行”步骤之后立即插入。

在此处输入图片说明

由于需要拆分流程,因此需要将ID列与原始文本输入行连接在一起。

您还具有Unique row 如果您未指定在哪个字段上过滤唯一值,则它将只输出一行。

现在,除非我误解了您的规格,否则我宁愿使用Kettle的日志记录系统 单击任意位置,在弹出窗口中选择属性,然后单击“日志记录”选项卡。 它将为您提供状态(开始/结束/停止/ ...)和大量其他信息,例如错误数,读取和写入的行(只需告诉PDI它必须在哪一步上寻找这些数字)。 。

您甚至可以几乎实时地在数据库中读取与PDI底部面板上相同的信息。 只需单击所需的字段,然后按SQL按钮即可创建文件。

请注意,由于历史原因,开始日期并不是真正的开始日期(它是前一次成功运行的日期)。 开始日期称为“ Replay date

另外,如果您需要该系统监视负载并知道运行是否必须开始,请当心,在系统突然终止时,有时没有时间将“ End”写入日志。 因此, logdate<now-10minutes更可靠。

在此处输入图片说明

要仅对流的第一行执行某项操作,请使用“添加序列”步骤(从1开始),然后执行条件为“ seq = 1”的“过滤行”步骤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM