根据文本文件输入元数据制作数据库插入

Posted

技术标签:

【中文标题】根据文本文件输入元数据制作数据库插入【英文标题】:Make a DB INSERT based on Text File Input metadata 【发布时间】:2017-08-28 16:17:19 【问题描述】:

我正在开发一个 ETL,并且必须执行一些例程来监控它。

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

我想我理解你的想法,但无法仅基于图像实现它。我所做的是检查文本文件输入上的“输出中的Rownum”选项。然后我使用过滤器行来拆分流,将第一行移动到一个流中,将所有其他行移动到另一个流中。在接收第一行的流上,我使用数据库查找来查询表中的文件名。如果查找带来表 PK,我知道该文件已被处理,如果它为 null,我知道该文件是新的要处理的。 @Hikari 我知道您想要 1) 插入一行并 b) 在转换结束时更新该行。对?只有一行后,执行数据库插入并将 ID 字段与主流连接。【参考方案2】:

您还有一个Unique row。如果你没有指定在哪个字段上过滤一个唯一值,它将输出一行并且正好一行。

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

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

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

此外,如果您需要该系统来监控负载并知道运行是否必须开始,请注意在突然结束时系统有时没有时间将“结束”写入日志。因此logdate<now-10minutes 更可靠。

【讨论】:

非常有趣!我去看看谢谢!【参考方案3】:

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

【讨论】:

以上是关于根据文本文件输入元数据制作数据库插入的主要内容,如果未能解决你的问题,请参考以下文章

读取 txt 文件并插入文本小部件后显示的括号。任何简单的修复方法?

LINUX C语言,在文本中某一行插入内容,最好有程序。

python如何在文本框中输入信息插入到数据库

如何使用python3将输入数据存储到文本文件中并打印数据输出?

(31)sed命令完全攻略

向 MDB 插入和更新数据