我有一个包含多个数据集的CSV。例如,
FIELD1, 10, FIELD2, 20, FIELD3, 30 // dataset1 begins here
FIELD4, 40, FIELD5, 50 // line 2 of dataset1
SUBFIELD1_ROW1, 100, SUBFIELD2_ROW1, 200 // subsection of dataset1: line1
SUBFIELD1_ROW2, 300, SUBFIELD2_ROW2, 400 // subsection of dataset1: line2
SUBFIELD1_ROW3, 500, SUBFIELD2_ROW3, 600 // subsection of dataset1: line3
FIELD1, 10, FIELD2, 20, FIELD3, 30 // dataset2 begins here
FIELD4, 40, FIELD5, 50 // line 2 of dataset2
SUBFIELD1_ROW1, 100, SUBFIELD2_ROW1, 200 // subsection of dataset2: line1
SUBFIELD1_ROW2, 300, SUBFIELD2_ROW2, 400 // subsection of dataset2: line2
SUBFIELD1_ROW3, 500, SUBFIELD2_ROW3, 600 // subsection of dataset2: line3
// dataset 3
// dataset 4 and so on
是否可以将此CSV分为4部分(每个数据集一个)?我浏览了Univocity GitHub页面上的测试类,但找不到类似的示例。
答案 0 :(得分:0)
选中此example。基本上,您需要使用针对第一列的InputValueSwitch
。为“ FIELD1”添加一个开关,为“ Field4”添加另一个,为“ SUBFIELD”添加另一个。您需要使用以下方法将不同的处理器与每种可能的行类型相关联:
inputSwitch.addSwitchForValue(<your column matcher>, processorForRowWhereMatcherReturnsTrue);
由您决定行格式更改时会发生什么。您可以覆盖
public void rowProcessorSwitched(RowProcessor from, RowProcessor to)
在InputValueSwitch
中,您可以做任何所需的事情。
请检查以下其他相关问题:
Univocity - parse each TSV file row to different Type of class object
Univocity CSV parser multiple beans with multiple rows in single CSV