Java - MetaData를 활용하여 Database의 테이블별 데이타를 파일로 저장
Posted 11 5, 2009 18:37, Filed under: Language/OpenSource
# 한번의 광고 클릭으로, 당신을 대신해서 불우이웃을 도울 기회가 많아집니다.
1. 기능 : Dababase 의 메타 정보를 이용하여 테이블별 로우의 값을 추출하여 insert쿼리로 완성된 sql 파일과 xls 파일로 저장을 합니다.
# sql 파일로 직접 데이타를 insert 할수 있고, xls 파일은 엑셀로 활용하거나,
엑셀로더가 지원되는 DB툴에서 데이타를 업로드 할수 있습니다.
- 기존 euc-kr로 인코딩이 설정된 Database에서 utf-8 또는 기타 인코딩이 변경된 Database로 데이타 이동시에 (한글,한자깨짐)사용해도 될거 같습니다.
2. 현재 구현된 추출 가능한 Database는 Oracle, Mysql 입니다.
기타 다른 Database도 각각의 설정만 추가로 해준다면 가능할걸로 생각됩니다.
3. 테스트 사항
# sql 파일로 저장시에는 테이블당 로우 수가 100만건 이상의 데이타까지 정상적으로 생성이 됐습니다.
# xls 파일로 저장시에는 JVM의 메모리를 많이 사용한 관계로 50만건 정도 이상의 데이타를 만들경우,
java.lang.OutOfMemoryError 발생 했습니다.
JVM 메모리 설정으로 어느정도까지는 더 생성할수 있을걸로 생각 됩니다.
4. 특이 사항
# xls 파일로 저장시 엑셀에서 하나의 Sheet 에 쓸수있는 로우 갯수가 65,536개로 제한된 문제를 해결하기 위해
하나의 시트에 65,536개의 데이타를 쓰기전에 약 65,530 개쯤에
다음 시트에 데이타를 저장하도록 구현 했습니다.
# 사용법 :
1. Config.properties 파일에서 Database와 저장위치 방식등을 설정합니다.
2.
- Eclipse 사용시 : meta 패키지 안에 Main.java 를 실행하면 됩니다.
- Command 창에서 실행시 : 압축을 푼디렉토리의 경로를 확인하여 start_getData.cmd 의 파일을
에디터로 연후에 해당하는 경로를 설정해준후에 start_getData.cmd 파일을 실행해주면 됩니다.
# 추가 내용 :
- 2009.11.29
1. DB의 컬럼 속성에서 DATE 타입의 데이타를 엑셀로 저장할때 '2009-11-29 18:31:38.0'와 같이
마지막에 '.0' 이 포함되어 저장되는 이유로 DB툴을 이용하여 엑셀파일 로드시에
DATE타입 에러가 발생하는 문제 처리.
2. Command 실행 파일 작성(start_getData.cmd).
3. 엑셀 파일명에 생성된 시트의 갯수 등록.
- 2010.06.25
1. JVM 메모리 부족으로 프로세스가 종료되는경우. 그로인해 엑셀파일이 정상적으로 생성되지 않아 열리지 않는경우 start_getData.cmd 파일에 아래 옵션을 추가 해줍니다.
-server -Xms256m -Xmx1024m
예) java -server -Xms256m -Xmx1024m -classpath "" Main
# 필요할때가 있을것 같아서, 일 하면서 틈틈히 만들었습니다.
공개한 소스를 보시고 조언이나 지적을 해주시면 많은 도움이 될것 같습니다.^^;
MetaDatabase.zip (170)"Language / OpenSource" 분류의 다른 글
| Java - Commons Net의 FTPClient 사용하여 FTP 접속및 파일 컨트롤 완성 소스 (0) | 2009/09/01 |
# 한번의 광고 클릭으로, 당신을 대신해서 불우이웃을 도울 기회가 많아집니다.
Response :
0 Trackback
,
0 Comment
Trackback URL : http://develop.sunshiny.co.kr/trackback/326