java - 从 sFtp 服务器读取文件

标签 java spring postgresql sftp spring-batch

我正在从 sftp 服务器读取文件并使用 Spring Batch Framework 将该文件加载到数据库中,下面是我的代码,但我收到错误

代码:

<bean id="cvsFileItemReaderMeta" class="org.springframework.batch.item.file.FlatFileItemReader">
    <!-- Read a csv file -->

    <property name="resource" value= "ftp://scmuser:scmuser%40123@172.18.228.32:22/home/scmuser/CSV/Meta.csv" />

错误:

org.springframework.batch.item.ItemStreamException: Failed to initialize the reader
    at org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.open(AbstractItemCountingItemStreamItemReader.java:142)
    at org.springframework.batch.item.support.CompositeItemStream.open(CompositeItemStream.java:96)
    at org.springframework.batch.core.step.item.ChunkMonitor.open(ChunkMonitor.java:115)
    at org.springframework.batch.item.support.CompositeItemStream.open(CompositeItemStream.java:96)
    at org.springframework.batch.core.step.tasklet.TaskletStep.open(TaskletStep.java:306)
    at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:192)
    at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:137)
    at org.springframework.batch.core.job.flow.JobFlowExecutor.executeStep(JobFlowExecutor.java:64)
    at org.springframework.batch.core.job.flow.support.state.StepState.handle(StepState.java:60)
    at org.springframework.batch.core.job.flow.support.SimpleFlow.resume(SimpleFlow.java:152)
    at org.springframework.batch.core.job.flow.support.SimpleFlow.start(SimpleFlow.java:131)
    at org.springframework.batch.core.job.flow.FlowJob.doExecute(FlowJob.java:135)
    at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:301)
    at org.springframework.batch.core.launch.support.SimpleJobLauncher$1.run(SimpleJobLauncher.java:134)
    at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49)
    at org.springframework.batch.core.launch.support.SimpleJobLauncher.run(SimpleJobLauncher.java:127)
    at com.tcs.ceg.iforesee.service.DataLoader.loadMetaMapping(DataLoader.java:127)
    at com.tcs.ceg.iforesee.service.UploadFile.uploadFile(UploadFile.java:77)
    at com.tcs.ceg.iforesee.service.UploadFile.main(UploadFile.java:22)
Caused by: java.lang.IllegalStateException: Input resource must exist (reader is in 'strict' mode): URL [ftp://username:password@hostname.com:22/home/scmuser/CSV/Meta.csv]
    at org.springframework.batch.item.file.FlatFileItemReader.doOpen(FlatFileItemReader.java:251)
    at org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.open(AbstractItemCountingItemStreamItemReader.java:139)

最佳答案

Caused by: java.lang.IllegalStateException: Input resource must exist (reader is in 'strict' mode): URL [ftp://username:password@hostname.com:22/home/scmuser/CSV/Meta.csv]

显然该资源不存在。您要么必须在尝试打开资源之前确保该资源存在,要么使用 FlatFileItemReader#setStrict 取消设置阅读器的严格模式。并传递 false

In strict mode the reader will throw an exception on AbstractItemCountingItemStreamItemReader.open(org.springframework.batch.item.ExecutionContext) if the input resource does not exist.

关于java - 从 sFtp 服务器读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24139363/

相关文章:

java - 迭代二维数组

java - 维护 JComboBox 大小

java - 如何找到通过maven依赖导入的jar的用法?

java - 异常是 java.lang.IllegalStateException : Could not load JDBC driver class

java - Spring Boot Quartz 调度程序配置

spring - 在 Spring Security 中使用基于表达式的访问控制有意义吗?

sql - Postgres 在一定时期内按前缀选择然后对其进行排序.. 性能低下

postgresql - 如何通过多个表的 View 隐式插入 SERIAL ID

java - Gwt CellTree isLeaf() 问题

sql - postgres 使用副本插入带有字段时间戳的 CSV 时出错