【问题标题】:How to add doube quotes to values using Spring Batch如何使用 Spring Batch 为值添加双引号
【发布时间】:2019-05-13 16:14:24
【问题描述】:

在我的代码中,我将我的记录从 MySQL 数据库写入 csv 文件,这可以正常工作。我现在要做的是将每个单个值包含在双引号中,但除了将双引号连接到rowMapper 中的每个值之外,我找不到任何执行此操作的方法。有什么更快的吗?我正在使用FlatFileItemWriter 写入文件。

【问题讨论】:

  • 显示你的代码你做了什么。
  • String quotedRow='"' + rowValue+'"'; ??我认为这是最快的方法。
  • 获取每一行的 DTO 非常长且复杂,因为属性不是字符串。我想知道在写作阶段是否有这样的事情,但是在网上冲浪我找不到与此相关的任何内容。
  • 更快是什么意思?您确实可以在行映射器中执行此操作,但我认为最好在项目处理器中执行此操作,因为这是项目处理器(转换数据)的典型用例。
  • @ZhaledAsufian 如果您找到了解决方法,请发布此问题的答案。我需要做同样的事情。谢谢

标签: java spring csv spring-batch


【解决方案1】:

你可以在 line tokenizer 中设置。

@Bean
public DelimitedLineTokenizer delimitedLineTokenizer() {
    DelimitedLineTokenizer lineTokenizer = new DelimitedLineTokenizer();
    lineTokenizer.setDelimiter(DelimitedLineTokenizer.DELIMITER_COMMA);
    lineTokenizer.setQuoteCharacter(DelimitedLineTokenizer.DEFAULT_QUOTE_CHARACTER);
    return lineTokenizer;
}

【讨论】:

  • 我看不到在FlatFileItemWriter 上设置行标记器的选项。如何确保实际使用 line tokenizer?
  • 那是因为您没有在项目编写器上设置标记器。它是在线路映射器上设置的。
【解决方案2】:

使用 Open CSV 中的 au.com.bytecode.opencsv.CSVWriter。

OpenCSV 的依赖项

<dependency>
    <groupId>net.sf.opencsv</groupId>
    <artifactId>opencsv</artifactId>
    <version>2.3</version>
</dependency>

使用此构造函数创建编写器。

CSVWriter writer = new CSVWriter(new FileWriter(rptFileName), CSVWriter.DEFAULT_SEPARATOR, CSVWriter.DEFAULT_QUOTE_CHARACTER);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多