JAVA/Java 일반
CSV파일 파싱 샘플(with apache commons-csv)
달사자!
2021. 11. 12. 15:49
1. 필요사항(maven dependency추가)
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-csv -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.9.0</version>
</dependency>
2. 간단한 java CSV파일 파싱 샘플 소스
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
/**
* CSV파일을 읽어서 파싱
* - apache commons-csv를 이용해서 CSV파일을 파싱: https://mvnrepository.com/artifact/org.apache.commons/commons-csv/1.9.0
*
* @author 엄승하
*/
@Slf4j
public class CsvFileParser {
public static void main(String[] args) throws IOException {
//파싱할 CSV파일
File targetFile = new File("CSV파일 경로");
int sampleDataRow = 0; //샘플 데이터 row번호
try (BufferedReader bufferedReader = new BufferedReader(new FileReader(targetFile))) {
CSVParser parser = CSVFormat.EXCEL.withFirstRecordAsHeader().withQuote('"').parse(bufferedReader); //엑셀타입 & 쌍따옴표 escape처리
List<CSVRecord> records = parser.getRecords();
log.debug("\nCSV 헤더\n\t{}\n데이터 샘플\n\t{}", parser.getHeaderMap(), records.get(sampleDataRow));
//샘플 데이터의 필드 데이터를 개행하여 출력
// for (String field : records.get(sampleDataRow)) {
// System.out.println(field);
// }
log.info("헤더 필드 갯수 :{} | {}번째 row의 데이터 필드 갯수:{}", parser.getHeaderMap().size(), sampleDataRow, records.get(sampleDataRow).size());
log.info("헤더: {} ", parser.getHeaderMap());
}
}
}