기본적으로, 당신의 메시지 본문 파일입니다. 당신은 이것을 지속해야합니다. 이론적으로, 당신은 그것을 어디서나 지속하는 것을 포함하여 무엇이든하는 프로세서에 전달할 수 있습니다. 더 많은 표준 Camel 구성 요소를 사용하면 camel-jdbc 또는 camel-sql 또는 camel-jpa를 사용할 수 있습니다.
사용 낙타-SQL은 :
- 당신은 URL의 일부로 삽입 문을 전달할 수 있습니다. : 위에서 아래에서
from("file://c:/test/in1a?noop=true")
.convertBodyTo(String.class)
.setProperty("fileName", simple("${header.CamelFileAbsolutePath}"))
.setProperty("fileContents", body())
.to("sql:insert into TEST1.FILE_UPLOAD (FILE_NAME, FILE_CONTENTS)
VALUES(:#${property.fileName}
, :#${property.fileContents})?dataSource=dsTest1");
:
- 그 전에, 당신은
코드는 다음과 같을 것 삽입 문에서 사용되는 매개 변수를 설정해야
- insert 문은 원했던 문과 같습니다 (두 개의 열이있는 테이블을 가정했습니다). 또한 "위치 매개 변수"대신 " 매개 변수"를 사용할 수 있다고 가정했습니다. (Camel 2.14 이전 버전이 있다면 다른 접근 방법을 확인하십시오.)
- 명명 된 매개 변수는 insert 문 앞에 속성으로 간단히 설정할 수 있습니다. 이것이 우리가 INSERT 전에 두 개의 "setProperty()"호출을하는 이유입니다.
- 본문이 FILE로 시작하기 때문에 먼저이를 String으로 변환합니다. 파일에 이진 데이터가있는 경우 다른 데이터로 변환 할 수 있습니다. 그것은 Serializable 뭔가 있어야합니다.
또한 삽입에 데이터 소스의 이름 지정 옵션이 있음을 알 수 있습니다. 이 이름 (dsTest1)을 사용할 수 있어야합니다. 내 경우에는, 나는 나의 봄 구성에서 다음과 같은 한 :
<bean name="dsTest1"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test1" />
<property name="username" value="user01" />
<property name="password" value="password01" />
</bean>
<bean name="route07Bean" class="com.mycompany.RouteBuilder07" />
<camelContext xmlns="http://camel.apache.org/schema/spring">
</camelContext>
당신의 POM에 대한 종속성이 될 것입니다 :
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-sql</artifactId>
<version>${camel-version}</version>
</dependency>
Here's a link to the Documentation for the SQL component
당신은 당신의 대상으로 낙타 JDBC 구성 요소를 사용할 수 있습니다 Gnanagurus가 그의 대답에서 보여준 것처럼. 그러나 INSERT 문을 작성하여 먼저 BODY 문에 입력해야합니다.또한 데이터베이스에서 정확히 원하는 것을 파악해야합니다. 먼저 파일의 레코드를 분할해야합니까? 전체 파일이 하나의 레코드로 들어갑니다 /. 방법? –
전체 파일을 그대로 BLOB 형식으로 데이터베이스에 삽입하려고합니다. – user6641655