[java] OpenCSV를 사용하여 CSV 파일에서 임의로 중복된 데이터를 제거하는 방법은?
먼저, OpenCSV를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우, pom.xml
파일에 다음 의존성을 추가합니다:
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.4</version>
</dependency>
그 후, 다음과 같이 CSV 파일을 읽어서 중복된 데이터를 제거하는 코드를 작성할 수 있습니다:
import com.opencsv.CSVReader;
import com.opencsv.CSVWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class RemoveDuplicateDataFromCSV {
public static void main(String[] args) {
String inputFile = "input.csv";
String outputFile = "output.csv";
try (CSVReader reader = new CSVReader(new FileReader(inputFile));
CSVWriter writer = new CSVWriter(new FileWriter(outputFile))) {
Set<String> uniqueData = new HashSet<>();
List<String[]> lines = reader.readAll();
for (String[] line : lines) {
String data = line[0]; // CSV 파일에서 중복을 체크할 데이터 열을 선택합니다.
if (!uniqueData.contains(data)) {
uniqueData.add(data);
writer.writeNext(line);
}
}
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
위 코드에서 input.csv
는 입력 CSV 파일의 경로를, output.csv
는 중복이 제거된 데이터를 저장할 출력 CSV 파일의 경로를 나타냅니다. 중복을 체크할 데이터 열은 String data = line[0]
와 같이 선택합니다. 중복된 데이터를 제외한 나머지 데이터는 writer.writeNext(line)
메소드를 사용하여 출력 파일에 쓰입니다.
이 예시 코드를 실행하면, 입력 CSV 파일에서 중복된 데이터가 제거된 후의 결과를 포함하는 출력 CSV 파일이 생성됩니다.