[java] OpenCSV를 사용하여 CSV 파일의 데이터를 피벗하는 방법은?

CSV 파일은 데이터를 쉼표(,)로 구분하여 저장하는 파일 형식입니다. 피벗이란 데이터를 가로와 세로로 변경하는 작업을 말합니다. OpenCSV는 Java에서 CSV 파일을 쉽게 처리할 수 있는 라이브러리입니다. 이번 포스트에서는 OpenCSV를 사용하여 CSV 파일의 데이터를 피벗하는 방법을 알아보겠습니다.

1. OpenCSV 라이브러리 추가

먼저 프로젝트에 OpenCSV 라이브러리를 추가해야 합니다. 아래의 Maven 의존성을 pom.xml 파일에 추가합니다.

<dependency>
   <groupId>com.opencsv</groupId>
   <artifactId>opencsv</artifactId>
   <version>5.5.2</version>
</dependency>

2. CSV 파일 읽기

다음으로는 CSV 파일을 읽어와야 합니다. OpenCSV의 CSVReader 클래스를 사용하여 파일을 읽을 수 있습니다. 아래는 파일을 읽고 이를 이차원 배열로 저장하는 예제입니다.

import com.opencsv.CSVReader;

try (CSVReader reader = new CSVReader(new FileReader("data.csv"))) {
    List<String[]> lines = reader.readAll();
    String[][] data = lines.toArray(new String[0][0]);
    // 파일 데이터를 이차원 배열로 저장
} catch (IOException e) {
    e.printStackTrace();
}

3. 데이터 피벗

CSV 파일의 데이터를 피벗하기 위해 이차원 배열을 가공해야 합니다. 아래는 데이터를 피벗하는 예제입니다.

int rowCount = data.length;
int colCount = data[0].length;

List<String[]> pivotedData = new ArrayList<>();
for (int i = 0; i < colCount; i++) {
    String[] newRow = new String[rowCount];
    for (int j = 0; j < rowCount; j++) {
        newRow[j] = data[j][i];
    }
    pivotedData.add(newRow);
}

String[][] pivotedDataArray = pivotedData.toArray(new String[0][0]);

위의 코드는 열과 행을 교체하여 피벗된 데이터를 얻는 방법입니다. pivotedDataArray 변수에 피벗된 데이터가 저장됩니다.

4. 피벗된 데이터 쓰기

피벗된 데이터를 필요에 맞게 가공한 후, 다시 CSV 파일로 저장할 수 있습니다. 예를 들어, CSVWriter 클래스를 사용하여 피벗된 데이터를 새로운 CSV 파일에 쓸 수 있습니다.

import com.opencsv.CSVWriter;

try (CSVWriter writer = new CSVWriter(new FileWriter("pivoted_data.csv"))) {
    for (String[] row : pivotedDataArray) {
        writer.writeNext(row);
    }
} catch (IOException e) {
    e.printStackTrace();
}

위의 코드는 pivotedDataArray 배열을 이용하여 새로운 CSV 파일에 데이터를 씁니다. 파일 이름은 “pivoted_data.csv”로 지정하였습니다.

마무리

이제 OpenCSV를 사용하여 CSV 파일의 데이터를 피벗하는 방법을 알아보았습니다. OpenCSV는 다양한 CSV 파일 작업에 유용한 기능을 제공하므로, 필요한 경우 다양한 기능을 활용해보세요.

참고 자료