Java处理CSV文件示例
1. 导入依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.10.0</version>
</dependency>
文件示例
下面是示例文件文件数据
vscode和idea都有解析CSV文件的插件, 通过不同的颜色或者网格区分. 建议下载一个
vscode建议使用: Edit CSV
idea建议使用: Big Data Tools
2.示例代码
@Test
public void importData() {
// 指定文件路径
try (FileReader fileReader = new FileReader("D:\\xxx\\data.csv");
CSVParser csvParser = new CSVParser(fileReader, CSVFormat.DEFAULT)) {
// 获取每一行记录
List<CSVRecord> records = csvParser.getRecords();
// 待导入数据暂存列表
List<SysModelData> list = new ArrayList<>();
for (int i = 1; i < records.size(); i++) {
String[] v = records.get(i).values();
// 获取对应列的数据
String lon = v[6];
String lat = v[7];
String ph = v[28];
String yjz = v[29];
String yjzc = v[30];
String n = v[32];
String nquan = v[31];
String k = v[33];
String slowK = v[34];
String fastK = v[35];
String p = v[36];
String time = v[38];
SysModelData build = SysModelData.builder()
.latitude(new BigDecimal(lat))
.longitude(new BigDecimal(lon))
.ph(Double.parseDouble(ph))
.yjz(Double.parseDouble(yjz))
.yjzc(Double.parseDouble(yjzc))
.nquan(Double.parseDouble(nquan))
.njianjie(Double.parseDouble(n))
.k(Double.parseDouble(k))
.kslow(Double.parseDouble(slowK))
.kfast(Double.parseDouble(fastK))
.p(Double.parseDouble(p))
.val18(1.0)
.build();
list.add(build);
// 得到数据列表之后可以随意操作, 我这里是导入数据库
// 导入的时候建议采用批量导入, 效率较高
if (list.size() % 5000 == 0) {
sysModelDataMapper.insertList(list);
list.clear();
}
}
// 导入剩余数据
sysModelDataMapper.insertList(list);
} catch (IOException | ParseException e) {
e.printStackTrace();
}
}
可以发现这个工具的作用就是方便于你打开文件以及返回你每一列的数据并帮您处理。 只需要专注每一列的数据的数据即可