Spring boot 骆驼文本文件到sql开发人员传输hello world

Spring boot 骆驼文本文件到sql开发人员传输hello world,spring-boot,apache-camel,oracle-sqldeveloper,Spring Boot,Apache Camel,Oracle Sqldeveloper,我正在阅读有关ApacheCamel的文档,但仍然不知道如何将文本文件的数据传输到sql开发人员模式。 我觉得这部分最让我困惑: from("file:/tmp/input?move=./done") .process(new MyLogProcessor()) .bean(new MyTransformer(), "TransformContent") // write it to this output .to("sql:sel

我正在阅读有关ApacheCamel的文档,但仍然不知道如何将文本文件的数据传输到sql开发人员模式。 我觉得这部分最让我困惑:

from("file:/tmp/input?move=./done")
        .process(new MyLogProcessor())
        .bean(new MyTransformer(), "TransformContent")
        // write it to this output
        .to("sql:select * from articles where category = #"");
是否有任何hello world应用程序可以从文本文件传输到sql开发人员,我可以看到这些应用程序来了解工作原理

谢谢

您必须将文件的输出转换为字符串。比如:

@Override
public void configure() throws Exception {
    from("file:/tmp/input?move=./done")
    .log("order content: ${body}")
    .transform(new Expression() {

        @Override
        public <T> T evaluate(Exchange exchange, Class<T> type) {
            String body = exchange.getIn().getBody(String.class);
            return (T) body;
        }

    })
    .to("sql:select * from articles where category = #?dataSource=myDS")
    .log("query content: ${body}");
}
我添加了一些日志以查看每个步骤的结果是如何执行的。

您必须将文件的输出转换为字符串。比如:

@Override
public void configure() throws Exception {
    from("file:/tmp/input?move=./done")
    .log("order content: ${body}")
    .transform(new Expression() {

        @Override
        public <T> T evaluate(Exchange exchange, Class<T> type) {
            String body = exchange.getIn().getBody(String.class);
            return (T) body;
        }

    })
    .to("sql:select * from articles where category = #?dataSource=myDS")
    .log("query content: ${body}");
}

我添加了一些日志以查看每个步骤的结果是如何执行的。

不清楚是否需要将文件内容解析为SQL,但需要将正文转换为字符串:

from("file:/tmp/input?move=./done")
        .process(new MyLogProcessor())

        ... What ever you want here

        .convertBodyTo(String.class)
        .to("sql:select * from articles where category = #"");

不清楚是否需要将文件内容解析为SQL,但需要将正文转换为字符串:

from("file:/tmp/input?move=./done")
        .process(new MyLogProcessor())

        ... What ever you want here

        .convertBodyTo(String.class)
        .to("sql:select * from articles where category = #"");

感谢您的提示,如何将文本文件中的数据附加到数据库中?那些发生在选择行中的参数?由于有一个唯一的参数,Camel会自动进行匹配,转换找到的唯一参数。如果您需要提供更多参数,您可能需要在组件文档中查看使用命名参数:在您的示例中,您可以参考field1和field2,并提供一个表达式,根据正文中提供的内容(本例中为文件内容)将映射值返回到这些键。Camel将注意从映射中获取这些值,并将其注入底层JDBC prepared语句中。IMHO不需要表达式。您可以使用fromfile:xxx.convertBodyToString.class将文件InputStream转换为字符串可能他最终需要对内容进行一些解析,并提供一个带有有用值的映射,我想这是典型的用例。感谢您的提示,如何将文本文件中的数据附加到数据库中?那些发生在选择行中的参数?由于有一个唯一的参数,Camel会自动进行匹配,转换找到的唯一参数。如果您需要提供更多参数,您可能需要在组件文档中查看使用命名参数:在您的示例中,您可以参考field1和field2,并提供一个表达式,根据正文中提供的内容(本例中为文件内容)将映射值返回到这些键。Camel将注意从映射中获取这些值,并将其注入底层JDBC prepared语句中。IMHO不需要表达式。您可以使用fromfile:xxx.convertBodyToString.class将文件InputStream转换为字符串可能他最终需要对内容进行一些解析,并提供一个带有有用值的映射,我想这是典型的用例。