Spring batch 完全禁用DelimitedLineTokenizer中的QuoteCharacter

Spring batch 完全禁用DelimitedLineTokenizer中的QuoteCharacter,spring-batch,Spring Batch,我的问题与问题完全相同,但我无法使用上述解决方案。 总结: csv文件被读取,但包含如下双引号:一切正常&“某些文本&这必须是另一个字段”&…(&is分隔符) 因此,在本例中,解析是错误的,因为它将多个字段分配给一个 由于csv中的文本种类繁多(没有安全的quoteCharacter),上述问题的答案没有帮助。 我还尝试通过将这段代码放入xml配置中来禁用quoteCharacter: <bean id="lineTokenizer" class="org.springfr

我的问题与问题完全相同,但我无法使用上述解决方案。

总结: csv文件被读取,但包含如下双引号:
一切正常&“某些文本&这必须是另一个字段”&
…(&is分隔符)

因此,在本例中,解析是错误的,因为它将多个字段分配给一个
由于csv中的文本种类繁多(没有安全的quoteCharacter),上述问题的答案没有帮助。
我还尝试通过将这段代码放入xml配置中来禁用quoteCharacter:

<bean id="lineTokenizer"
        class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
        <property name="delimiter" value="&" />
        <property name="quoteCharacter" value="" />
            ...

是否可以在不指定quoteCharacter常量的情况下读取双引号,或者其他可能解决此问题的方法

更新: 还尝试了以下方法:

bean id="lineTokenizer"
        class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
        <property name="delimiter" value="&" />
        <property name="quoteCharacter"><null/></property>

一小时前,我刚刚用我的解决方案回答了你的相关问题,因为我今天遇到了这个问题

试试我在那里发布的解决方案。它应该会起作用

这里是我答案的链接:

更新: 我把答案直接贴在这里:

我遇到了同样的问题。然而,提出的解决方案不是最优的。如果数据中没有合适的引号字符怎么办?不幸的是,我们并不总是能够控制输入数据,对它们进行预处理通常不是一个好主意。在探索DelimitedLineTokenizer源代码时,我决定采用这个解决方案,我将与大家分享这个答案。它需要重写一个类,但这样我们就完全消除了引号字符的问题

import org.springframework.batch.item.file.transform.DelimitedLineTokenizer;

    public class CustomDelimitedLineTokenizer extends DelimitedLineTokenizer {

        @Override
        protected boolean isQuoteCharacter(char c) {
            return false;
        }

    }

这样,DelimitedLineTokenizer就无法识别引号字符。当然,如果我们需要这个功能,那么这个解决方案是不可采用的,但是我认为它比建议的只排序问题而不是解决问题要好。希望它能帮助别人。

我一小时前刚刚用我的解决方案回答了你的相关问题,因为我今天遇到了这个问题

试试我在那里发布的解决方案。它应该会起作用

这里是我答案的链接:

更新: 我把答案直接贴在这里:

我遇到了同样的问题。然而,提出的解决方案不是最优的。如果数据中没有合适的引号字符怎么办?不幸的是,我们并不总是能够控制输入数据,对它们进行预处理通常不是一个好主意。在探索DelimitedLineTokenizer源代码时,我决定采用这个解决方案,我将与大家分享这个答案。它需要重写一个类,但这样我们就完全消除了引号字符的问题

import org.springframework.batch.item.file.transform.DelimitedLineTokenizer;

    public class CustomDelimitedLineTokenizer extends DelimitedLineTokenizer {

        @Override
        protected boolean isQuoteCharacter(char c) {
            return false;
        }

    }

这样,DelimitedLineTokenizer就无法识别引号字符。当然,如果我们需要这个功能,那么这个解决方案是不可采用的,但是我认为它比建议的只排序问题而不是解决问题要好。希望它能帮助一些人。

这有点困难,但我可以通过将相同的字符设置为分隔符和引号字符来完全禁用引号:

new FlatFileItemReaderBuilder<...>
        .delimited()
        .delimiter("&")
        .quoteCharacter('&')
新FlatFileItemReaderBuilder
.delimited()
.分隔符(&)
.quoteCharacter(“&”)

这有点麻烦,但我可以通过将相同的字符设置为分隔符和引号字符来完全禁用引号:

new FlatFileItemReaderBuilder<...>
        .delimited()
        .delimiter("&")
        .quoteCharacter('&')
新FlatFileItemReaderBuilder
.delimited()
.分隔符(&)
.quoteCharacter(“&”)

您是否尝试将值设置为
?@bellabax我现在尝试了空-更新问题,仍然没有结果:(您是否尝试将值设置为
?@bellabax我现在尝试了空-更新问题,仍然没有结果:(