【问题标题】:Talend: how to read the 2 first lines of a .txt/.csv file, and get the date from the line beginning with "Generated:"Talend:如何读取 .txt/.csv 文件的前 2 行,并从以“Generated:”开头的行获取日期
【发布时间】:2021-03-18 20:45:04
【问题描述】:

我使用 tFileInputDelimited 组件以通常的方式从 .csv 文件中读取数据,然后将其读取并输出到本地 PostgreSQL 数据库。

但我的问题是我需要从文件的前 2 行中获取日期。 前 2 行不是列分隔的...而只是一个 2 行标题。

我需要知道要使用什么组件以及如何将它们设置为:

  • 阅读前两行
  • 获取以“Generated:”开头的行
  • 获取“:”之后的日期

示例标题,前 2 行:

Report Title:this_is_the_title
Generated: Nov-27-2020, 14:03:01 CET

是否可以使用 Talend 做到这一点,哪些组件最好? 我还不知道所有组件,并尝试使用 tFileInputDelimited,但它似乎无法使用它。

==== 编辑 ==== 我正在尝试用 tFileInputRegex 来做,这可以工作......

【问题讨论】:

    标签: csv file text header talend


    【解决方案1】:

    将此模式用于输入文件:

    tFileInputDelimited中,指定“@”作为字段分隔符(将整行设置为1条记录)并将限制设置为2以仅读取前2行:

    tFilterRow,点击高级模式,添加此代码以仅保留“生成”行:

    tJavaRow中,添加这段代码来提取日期:

    output_row.line = input_row.line.substring("Generated:".length() + 1);
    

    【讨论】:

    • 感谢您的回答。我现在设法将 tFileInputRegex 与“^Generated:(.*)$”一起使用,这似乎与您的提议相同。所以我对列中的数据使用 tFileInputDelimiter,对 2 行标题中的日期使用 tFileInputRegex。你觉得还可以吗?
    • @Malo 在我看来,tFileInputDelimiter(带限制设置)和 tFilterRow 更简单,满足您的用例要求。
    猜你喜欢
    • 2020-12-17
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    相关资源
    最近更新 更多