当前位置: 首页 > 知识库问答 >
问题:

如何使用其他字段丰富csv内容数据,并使用apache camel将其转换为以管道作为分隔符的文本文件

蔚学林
2023-03-14

我有一个csv文件,输入内容用逗号“,”分隔。我想把它转换成带有“|”分隔符的文本文件。我正在使用apache camel CsvDataFormat转换给定的csv数据格式。我可以将csv内容转换为管道分隔字符串。我还有两个常数,我已经分配给了两个变量。我想用两个额外的字段来丰富输出数据的内容,如预期输出所示。

输入

test.csv

Jack Dalton, 115, mad at Averell 
Joe Dalton, 105, calming Joe 
William Dalton, 105, keeping Joe from killing 
Averell Averell Dalton, 80, playing with Rantanplan 
Lucky Luke, 120, capturing the Daltons

Test.java

public class Test{
    private String name = "Hell0";
    private String address = "134 johen rd";
}

ConverterRoute。JAVA

public class ConverterRoute implements RoutesBuilder {

    private static final String SOURCE_INPUT_PATH = "file://inbox?fileName=test.csv";

    private static final String SOURCE_OUTPUT_PATH = "file://outbox?fileName=file.txt";

    public void addRoutesToCamelContext(CamelContext context) throws Exception {

        context.addRoutes(new RouteBuilder() {
            public void configure() {
                try {
                    CsvDataFormat csvDataFormat = new CsvDataFormat();
                    csvDataFormat.setDelimiter('|');
                    csvDataFormat.setHeaderDisabled(true);

                    from(SOURCE_INPUT_PATH).
                            unmarshal().csv().
                            marshal(csvDataFormat).
                            to(SOURCE_OUTPUT_PATH)
                            .end();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

输出

文件txt

Jack Dalton| 115 | mad at Averell 
Joe Dalton| 105 | calming Joe
William Dalton | 105 | keeping Joe from killing
Averell Averell Dalton| 80| playing with Rantanplan
Lucky Luke| 120| capturing the Daltons

预期产量

文件txt

Jack Dalton| 115 | mad at Averell | Hell0 | 134 johen rd
Joe Dalton| 105 | calming Joe | Hell0 | 134 johen rd
William Dalton | 105 | keeping Joe from killing | Hell0 | 134 johen rd
Averell Averell Dalton| 80| playing with Rantanplan | Hell0 | 134 johen rd
Lucky Luke| 120| capturing the Daltons | Hell0 | 134 johen rd

在上面的输出中file.txt最后两列是我在Test.javapojo类中的两个常量。我想将我的pojo字段丰富到最终输出中。有什么方法可以达到这个结果。

共有1个答案

濮阳品
2023-03-14

在你的路线上

unmarshal().csv()

你有一个列表

您要做的是向每个内部列表添加两个值。

因为每个“行”的值都是相同的,所以编写一个接受列表的普通Java Bean可能是最简单的方法

在你的骆驼路线中,你称这个豆子为

.bean(YourBean.class, "methodname")

但是只有当Bean有多个方法时才需要methodname

然后你的路线继续

.marshal(csvDataFormat)
.to(SOURCE_OUTPUT_PATH)

这将生成您想要的文件。

顺便说一下,。end()不需要在路线的末尾。

 类似资料:
  • 我有一个逗号分隔的CSV文件(),其中逗号通过在引号中环绕数据来转义()。 我想通过使用记事本查找任何未包含在双引号()中的逗号,并将其替换为管道,将我的CSV转换为管道分隔文件()。 我的第一种方法是使用正则表达式匹配任何不带引号的逗号。但是,在记事本中搜索会同时替换未加引号的逗号和任何包含逗号的带引号的字符串。 如何使用记事本将逗号分隔的CSV文件()转换为管道分隔的文件()?

  • 问题内容: 所以我想将一个简单的制表符分隔的文本文件转换为一个csv文件。如果我使用string.split(’\ n’)将txt文件转换为字符串,则会得到一个列表,其中每个列表项都是字符串,每列之间带有’\ t’。我当时以为我可以用逗号替换’\ t’,但它不会像清单中的字符串一样对待字符串,并允许我使用string.replace。这是我的代码的开始,仍然需要解析选项卡“ \ t”的方法。 问题

  • 我有一个逗号分隔的文件,其中有许多行类似于下面的一行。 引号用于转义用于表示多个值的分隔符逗号。 现在,如果可能的话,如何使用在逗号分隔符上拆分上述值?

  • 本文向大家介绍如何使用R编写文本并将其输出为文本文件?,包括了如何使用R编写文本并将其输出为文本文件?的使用技巧和注意事项,需要的朋友参考一下 我们可以使用writeLines和fileConn函数来做到这一点。 示例 我们可以这样做,并按照以下方式在R中查看这些文件- 您可以在系统的文件文件夹中找到这些文件。

  • 我需要将GIF放到输入连接https://developer.android.com/guide/topics/text/image-keyboard.html 但是我有一个问题,因为我需要获取这个GIF的uri。我不能像文件一样加载它,并且只能得到它的路径。我怎么才能拿到URI呢?或者我需要用另一种方式来做这件事?

  • 我在课堂上收到了一个CSV,我需要获取用于装箱POJO的值。我不必在目录中打开“file.csv”,由Flink将逗号分隔的元素传递给EventDeserializationSchema,这个元素用于“Event Class”来处理每个事件。 以下是一个示例: 在:“‘亚当’、‘史密斯’,66,….‘12:01:00.000’”- 为此,我正在使用:https://github.com/Faste