공공데이터에서는 데이터를 CSV 파일로 제공하는 경우가 많기 때문에 이 파일을 Java로 읽어서 우리의 DB에 저장을 해야하는 상황이 많다.
CSV 파일을 Java로 불러와서 읽는 법에 대해서 알아보자.
공공데이터에는 방대한 양의 데이터가 들어있어서 이를 한번에 읽기에는 부하가 크다.
그래서 우선 이 데이터를 분할할 필요가 있다.
http://www.nsdi.go.kr/lxportal/index.html?menuno=2772
국가정보공간 포털에서 대용량 액셀을 분할하는 파일을 제공하고 있다.
(exe 파일이라 맥에서는 사용 불가하다.)
이를 이용해서 액셀을 여러개의 파일로 분할하자.
분할한 액셀을 Java에서 읽어보자.
내가 사용한 데이터는 전국 음식점 정보이고 다음과 같은 양식으로 이루어져 있다.
public void readCSV() {
try {
File file = new File("C:\\Users\\Downloads\\음식점\\음식점_0.csv");
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine())!=null) {
List<String> aLine = new ArrayList<String>();
String[] lineArr = line.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)",-1);
aLine = Arrays.asList(lineArr);
System.out.println(aLine);
}
} catch (Exception e) {
log.error(e.getMessage());
}
}
File file = new File("C:\\Users\\Downloads\\음식점\\음식점_0.csv");
이 부분에는 파일의 경로를 입력해주면 된다.
이렇게 하고 출력을 해보면 파일은 잘 불러오지만 한글에 대해서 글자가 깨진다..
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "EUC-KR"));
이렇게 수정하면 잘 불러오는 것을 볼 수 있다.