| ||||||
| ||
시그시끄 님의 최근 게시물입니다. | |
2015-11-03 08:30:30 | |
2015-11-01 19:50:03 | |
2015-10-25 15:17:50 | |
2015-10-17 17:20:59 | |
2015-10-13 22:29:36 | |
2015-10-13 17:45:31 | |
2015-10-08 09:04:22 | |
2015-09-23 19:00:47 | |
2015-09-19 01:28:59 | |
2015-09-17 13:23:40 |
추천 elf2lf 데이터가 어떤지 잘 모르겠지만
힙 에러라 데이터가 안되면 가상 메모리 사용하면 될텐데 직접 컨트롤이 안되는 자바의 문제인것 같네요 C로 하면 메모리 지정해서 확인할 수 있을텐데 C를 이용해서 해보시고 가능하면 C로 DLL을 만들어서 사용하면 어떨까요 데이터가 어떤지 잘 모르겠지만 힙 에러라 데이터가 안되면 가상 메모리 사용하면 될텐데 직접 컨트롤이 안되는 자바의 문제인것 같네요 C로 하면 메모리 지정해서 확인할 수 있을텐데 C를 이용해서 해보시고 가능하면 C로 DLL을 만들어서 사용하면 어떨까요 |
2014-11-19 11:04:24 [덧글] |
추천 아래쪽에 내려가다보면 해당 내용이 있는 것 같네요 http://www.coderanch.com/t/424181/open-source/Read-xls-xlsx-file-format |
2014-11-19 11:20:43 [덧글] |
추천 LECHUCK 아마도 POI에서 엑셀의 모든 데이터를 메모리에 올린 다음 작업을 하기 때문에 그런거 같은데요.
먼저 이클립스 메모리가 아니라 애플리케이션 실행시 JVM에 넘겨줘야하는 -Xmx 옵션을 사용해서 메모리를 늘려줘 보시구요. 그래도 메모리 부족이 뜬다면 모두 메모리에 올리기에는 전체 데이터가 너무 크기 때문에 csv 파일로 해서 블럭단위로 읽으면서 DB에 추가하면 될 거 같습니다. 아니면 xml로 한다면 DOM 대신 SaxParser를 사용해야겠죠. 아마도 POI에서 엑셀의 모든 데이터를 메모리에 올린 다음 작업을 하기 때문에 그런거 같은데요. 먼저 이클립스 메모리가 아니라 애플리케이션 실행시 JVM에 넘겨줘야하는 -Xmx 옵션을 사용해서 메모리를 늘려줘 보시구요. 그래도 메모리 부족이 뜬다면 모두 메모리에 올리기에는 전체 데이터가 너무 크기 때문에 csv 파일로 해서 블럭단위로 읽으면서 DB에 추가하면 될 거 같습니다. 아니면 xml로 한다면 DOM 대신 SaxParser를 사용해야겠죠. |
2014-11-19 11:25:17 [덧글] |
추천 토루토루 윗분 말씀대로 이클립스 메모리 말고 run 실행 설정에서 -Xmx 옵션으로 메모리 설정하시면 될 듯 합니다.
그리고 단순 DB Insert 라면 건별로 업데이트 하지 마시고 addBatch 이용해서 최소 천건단위로 insert 하세요. 10만건을 정해진 시간(예 : 5초 이내) 안에 처리해야 되는게 아니라면 위 내용만으로도 작업에는 큰 문제 없어 보입니다. 윗분 말씀대로 이클립스 메모리 말고 run 실행 설정에서 -Xmx 옵션으로 메모리 설정하시면 될 듯 합니다. 그리고 단순 DB Insert 라면 건별로 업데이트 하지 마시고 addBatch 이용해서 최소 천건단위로 insert 하세요. 10만건을 정해진 시간(예 : 5초 이내) 안에 처리해야 되는게 아니라면 위 내용만으로도 작업에는 큰 문제 없어 보입니다. |
2014-11-19 11:54:40 [덧글] |
추천 만약 10만건을 5초 이내에 올려야 되는 상황이 되면 다른 방법을 써야 하나요?
댓글 읽고 갑자기 궁금해지네요 만약 10만건을 5초 이내에 올려야 되는 상황이 되면 다른 방법을 써야 하나요? 댓글 읽고 갑자기 궁금해지네요 |
2014-11-19 12:09:08 [덧글] |
추천 1 귀린. 대용량 업데이트를 이용해야죠.. 검색해보니 나오네요.참고해보세요.
http://fruitdev.tistory.com/111 대용량 업데이트를 이용해야죠.. 검색해보니 나오네요.참고해보세요. http://fruitdev.tistory.com/111 |
2014-11-19 14:35:59 |
추천 토루토루 사실 addBatch를 이용하여 대용량 처리를 하더라도 특정 시간안에 모든 작업을 처리해야 되는경우에는
싱글 스레드로 실행시 어느정도 한계가 있습니다. (제 생각) 저의 경우 대용량 처리를 할때에는 멀티스레드로 데이터의 각 범위를 정해서 addBatch를 이용하였습니다. 사실 addBatch를 이용하여 대용량 처리를 하더라도 특정 시간안에 모든 작업을 처리해야 되는경우에는 싱글 스레드로 실행시 어느정도 한계가 있습니다. (제 생각) 저의 경우 대용량 처리를 할때에는 멀티스레드로 데이터의 각 범위를 정해서 addBatch를 이용하였습니다. |
2014-11-19 18:19:01 |
추천 익명할래요 2년전인가.. 신입때
파일로된 190만 라인, 100~150MB 짜리의 텍스트 파일을 DB 인서트 한적있었는데. 저도 같은 증상 있었습니다. 파싱 완료 -> 인서트 하는 과정에서 파싱하다보니 변수에 데이터를 담아야 하는데 점점 많아 지면서 힙스페이스 오류가 나는 상황이었는데요. 1000건씩 파싱 -> 인서트 반복해서 해결했네요. saxparser도 찾아보니 라인별 파싱이라고 하는데요. 같은 방식으로 진행하면 되지 않을까 합니다. 2년전인가.. 신입때 파일로된 190만 라인, 100~150MB 짜리의 텍스트 파일을 DB 인서트 한적있었는데. 저도 같은 증상 있었습니다. 파싱 완료 -> 인서트 하는 과정에서 파싱하다보니 변수에 데이터를 담아야 하는데 점점 많아 지면서 힙스페이스 오류가 나는 상황이었는데요. 1000건씩 파싱 -> 인서트 반복해서 해결했네요. saxparser도 찾아보니 라인별 파싱이라고 하는데요. 같은 방식으로 진행하면 되지 않을까 합니다. |
2014-11-19 13:34:17 [덧글] |
추천 푸우날쎄 이전 프로젝트 중에 하루 교통카드데이터(서울기준, 일 하루 약 이천만건)를
일주일 치 정도 한번에 올린적이 있었는데, 그 때는 CSV 파싱 오픈 소스 이용해서, 읽어 들이고, 만건씩 AddBatch 사용해서 커밋 했었습니다. 2천 만건 기준으로 약 6분 정도 소요되었던 것으로 기억합니다. 이전 프로젝트 중에 하루 교통카드데이터(서울기준, 일 하루 약 이천만건)를 일주일 치 정도 한번에 올린적이 있었는데, 그 때는 CSV 파싱 오픈 소스 이용해서, 읽어 들이고, 만건씩 AddBatch 사용해서 커밋 했었습니다. 2천 만건 기준으로 약 6분 정도 소요되었던 것으로 기억합니다. |
2014-11-19 15:02:29 [덧글] |
추천 java nio 써서 버퍼사이로 끊어서 리드하세요 |
http://www.ppomppu.co.kr/zboard/view.php?id=developer&no=14020