首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pentaho PDI/ Kettle从文本文件中读取多行

Pentaho PDI/ Kettle从文本文件中读取多行
EN

Stack Overflow用户
提问于 2017-03-21 00:08:23
回答 2查看 1.6K关注 0票数 0

我有一个包含多个SQL语句的SQL文件,我需要使用Kettle / Pentaho PDI 6.1.0从一个文本文件中读取它们。

所有语句都使用分号分隔,但是每条语句可以跨越多行:

代码语言:javascript
运行
复制
CREATE TABLE Staging01 AS
SELECT ....
WHERE  ...;

UPDATE Staging01
SET ....
WHERE ...;

我需要解析该文件,将每个sql语句作为一个单独的字符串。

我试着一步一步地使用文本输入文件,但它总是逐行读取数据。

你能帮上忙吗?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-04-05 16:21:48

我认为你应该在添加一列之后使用"Row denormalizer“来对SQL指令的所有行进行分组(这个新字段会在遇到";”时发生变化)。要在流中也获取";“,请不要将其指定为分隔符。

票数 0
EN

Stack Overflow用户

发布于 2017-04-16 18:37:36

文本-文件-输入可以,只需将每一行作为一个单独的字段读取,例如选择固定模式和足够大的字段大小来创建一个名为line的字段。不要忘记在右侧启用修剪。

给定您的样例输入,想法是删除空行(这是TFI的默认设置),并连接组成语句的行。我们知道组中的最后一行是以分号结尾的。让我们使用用户定义的Java表达式line.endsWith(";") ? 1 : 0创建一个序列表达式

对于我们的目的来说,字段查询是一次性的,所以我们使用Analytic- _seq向前看一行,得到一个字段seq。If-Field- value -Is-Null将为我们将无用空值转换为0。

现在,让我们使用Group-By来计算作为seq的累加和的系列group

最后,我们可以使用Group-By和group字段将line与空格字符连接起来。

这是一个数据流解决方案。你当然可以编写一个简单的FSM脚本,但是为什么你要使用Kettle呢?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42908520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档