我正在尝试使用FlatFileItemReader解析CSV文件。此CSV包含一些带引号的换行符,如下所示。
email, name
abc@z.com, "NEW NAME
ABC"
但是这个解析失败了,必填字段是2,但实际是1。
我在FlatFileReader配置中缺少什么?
<property name="lineMapper">
<bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
<!-- The lineTokenizer divides individual lines up into units of work -->
<property name="lineTokenizer">
<bean
class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
<!-- Names of the CSV columns -->
<property name="names"
value="email,name" />
</bean>
</property>
<!-- The fieldSetMapper maps a line in the file to a Product object -->
<property name="fieldSetMapper">
<bean
class="com.abc.testme.batchjobs.util.CustomerFieldSetMapper" />
</property>
</bean>
</property>
答案 0 :(得分:11)
开箱即用的FlatFileItemReader使用SimpleRecordSeparatorPolicy作为您的用例
您需要设置DefaultRecordSeparatorPolicy
引用其javadoc:
RecordSeparatorPolicy,将所有行视为记录结尾,如 只要他们没有未终止的报价,并且不以a。结尾 继续标记。
示例xml配置
<bean id="reader"
class="org.springframework.batch.item.file.FlatFileItemReader">
...
<property name="recordSeparatorPolicy">
<bean class="org.springframework.batch.item.file.separator.DefaultRecordSeparatorPolicy" />
</property>
...
</bean>
答案 1 :(得分:0)
@client.event
async def on_message(message):
member = message.author
guild = message.guild
get_max_lvl_stats(member.id)
print(f"{member} from guild {guild} said>> '{message.content}'")
get_xp_stats(member.id)
get_lvl_stats(member.id)
if xp_results > maxlvlresult:
max_lvl_update(2, member.id)
lvl_update(1, member.id)
elif xp_results < maxlvlresult:
xp_update(1, member.id)
elif xp_results == 0:
pass
elif xp_results == maxlvlresult:
xp_update(1, member.id)
else:
print("An error occurred with on_message lvl updating.")
await client.process_commands(message)