티스토리 뷰
일단 제목은 거창하게 잡았다. [JDBC를 통해 Microsoft Excel File 연결하기] 그럴듯하다. 일반적으로 JDBC 프로그래밍을 하면 Oracle, MySQL 같은 RDBMS 를 가지고 한다. 당연하다. 하지만 꼭 RDBMS 의 데이터만 핸들링하란 법은 없다. JDBC 스펙에 의하면 비정형화되어 있는 파일들(csv, xls, txt) 같은 파일들도 핸들링할 수 있다고 나와있다. 그래서 이번 글에서는 일반 텍스트파일을 Microsoft Excel 파일로 변환해서 JDBC를 통해 연결하는 프로그램을 설명하려고 한다.
일단 특별한 프로그램이나 툴을 설치하지 않는다면 일반적인 Text 파일들은 직접 Java 가 핸들링할 수 없다. 그래서 할 수 없이 Excel 파일로 변환한 다음, ODBC 를 거쳐 JDBC까지 연결하도록 하자.
1. 먼저 필자는 Editplus 를 이용해서 아래의 그림과 같이 텍스트 파일을 만들었다. 앞에서부터 제품이름, 제품수량, 제품판매단가, 매입단가, 운송료이다. 현재 이 파일의 이름은 data.dat 이다.
2. 직접 JDBC가 텍스트 파일을 핸들링할 수 없기에, xls 파일로 변환하기 위해 Microsoft Excel 프로그램을 열었다.
3. 파일 열기를 하고, 이미 생성한 data.dat 파일을 선택했다.그러면 아래와 같이 [Text Import Wizard] 창이 나타난다. 먼저 [Original data type] 섹션에서 기본값 [Delimited] 가 선택돼있는 것을 확인하고 [Next] 버튼을 누른다. 미리보기를 통해 열고자 하는 파일이 보인다.
4. 두번째 스텝. [Delimiters] 섹션에 보면 기본값은 [Tab]이다. 필자가 생성한 파일은 탭으로 구분하지 않고, 컴마로 구분했기 때문에 [Comma] 를 선택했다. 그럼, 미리보기창에 보면 각각의 데이터가 Delimiter 기준으로 나눠짐을 볼 수 있다. [Next] 를 클릭하자.
5. 마지막 스텝. [Column data format] 의 기본값 [General] 을 확인하고, [Finish] 버튼을 클릭하면 변환작업이 모두 끝난다.
6. 변환작업이 모두 끝나면 아래의 그림처럼 [data.dat] 파일이 Excel 파일로 변환됐음을 확인할 수 있다.그리고 컴머로 구분된 자료들이 각각의 Excel 의 셀에 잘 위치하고 있음을 알 수 있다. 그리고 특별히 기억할 것은 지금 오픈한 파일의 이름이 Sheet 의 이름으로 들어온다는 것이다. 파일 아래의 Sheet 이름을 확인하자. 이건 매우 중요하다.
7. 이제 JDBC작업을 위해 이 data.dat 파일을 xls 파일로 변환하자. 한가지 아쉬운 점은 xlsx 즉 Excel 2007 버전 이상파일로 변환할 수 없다는 것이다. 그래서 필자는 할 수 없이 [다른 이름으로 저장]할 때 [Excel 97-2003 Workbook]으로 저장했다.
8. 필자는 C 드라이브의 Temp 폴더에 data.xls 라는 이름으로 저장했다.
9. 저장이 모두 끝났다.
10. 이제 ODBC 로 연결하자. [제어판] 으로 들어가서 [Performance and Maintenance] 로 가자.
11. [관리도구] [Administrative Tools] 로 가자.
12. [Data Source (ODBC)] 가 보인다. 더블클릭하자.
13. [ODBC Data Source Administrator] 창이 나타난다. 여러 탭 중에 [System DSN] 탭을 선택한다. 그리고 [Add] 버튼을 클릭하여 새로운 DSN 을 추가하자.
14. [Create New Data Source] 창이 나타났다. 목록 중에서 [Driver do Microsoft Excel(*.xls)] 을 선택한다. 왜냐하면 지금 ODBC 로 연결할 파일의 확장자가 xls 즉 Excel 파일이기 때문이다. [Finish] 버튼 클릭.
15. [Finish] 버튼을 클릭하면 [ODBC Microsoft Excel Setup] 창이 나타난다. 여기서 몇가지 중요한 포인트가 있다.
16. [Select Workbook]창이 나타난다. 여기서 위에서 xls 파일 저장한 디렉토리에 가서 저장한 파일을 지정한다. 그리고 [OK] 버튼을 클릭하여 창을 닫자.
17. 그러면 아래와 같이 [Version] 밑에 [Workbook:] 이 들어오고 방금 선택한 파일의 경로가 나온다. [OK] 버튼을 클릭하여 창을 닫자.
18. 아래 그림과 같이 [mydata] 라는 이름의 Data Source Name 이 완성됐다. [OK] 버튼을 클리하여 ODBC 관리자 창을 닫자.
19. 이제 Java 프로그래밍 할 차례이다. 아래와 같이 코딩했다.
이 코드에서 중요한 부분은
1) JDBC Driver 가 JDBC-ODBC Bridge Driver 라는 점.
2) JDBC url 은 jdbc:odbc:Data Source Name 이라는 점
3) Select 할 때 테이블의 이름은 Excel 의 Sheet 이름이며, Sheet 의 이름을 갖고 올 때 반드시 [Sheet Name$]로 해야한다는 점
4) Excel 파일의 각 셀에 저장한 값을 갖고 올 때 데이타타입별로 갖고 올 수 있다는 점. 즉 갖고 올 데이터가 정수이면 비록 텍스트파일에 저장돼있을 때 스트링이었다 하더라도 정수로 갖고 올 수 있다는 점이다.
20. 결과는 아래와 같다. 성공적으로 데이터를 갖고 온 것임을 알 수 있다. 이로써, 텍스트 파일이나 csv 혹은 xls 파일같은 비정형 데이터도 JDBC 에서 처리할 수 있다는 것을 확인했다. 재밌다. 여기서 한 가지 주의할 점은 Excel 파일의 데이터를 갖고 올 때 첫 행 글이 들어오지 않을 것이다. 이것은 첫 행은 헤더로 보기 때문이다. 그래서 Excel 파일에서는 첫 행에 반드시 제목을 주어야 한다. 잊지 말자.
※ 필자의 본 글을 작성하기 위해 참조한 사이트 주소를 소개합니다.
http://javaprogrammingforums.com/jdbc-database-tutorials/356-how-connect-excel-spreadsheet-using-jdbc-java.html
http://www.ehow.com/how_4810548_use-jdbc-connect-ms-excel.html
http://www.jdbctutorial.net/jdbc-read-data-microsoft-excel-sheet.php
일단 특별한 프로그램이나 툴을 설치하지 않는다면 일반적인 Text 파일들은 직접 Java 가 핸들링할 수 없다. 그래서 할 수 없이 Excel 파일로 변환한 다음, ODBC 를 거쳐 JDBC까지 연결하도록 하자.
1. 먼저 필자는 Editplus 를 이용해서 아래의 그림과 같이 텍스트 파일을 만들었다. 앞에서부터 제품이름, 제품수량, 제품판매단가, 매입단가, 운송료이다. 현재 이 파일의 이름은 data.dat 이다.
2. 직접 JDBC가 텍스트 파일을 핸들링할 수 없기에, xls 파일로 변환하기 위해 Microsoft Excel 프로그램을 열었다.
3. 파일 열기를 하고, 이미 생성한 data.dat 파일을 선택했다.그러면 아래와 같이 [Text Import Wizard] 창이 나타난다. 먼저 [Original data type] 섹션에서 기본값 [Delimited] 가 선택돼있는 것을 확인하고 [Next] 버튼을 누른다. 미리보기를 통해 열고자 하는 파일이 보인다.
4. 두번째 스텝. [Delimiters] 섹션에 보면 기본값은 [Tab]이다. 필자가 생성한 파일은 탭으로 구분하지 않고, 컴마로 구분했기 때문에 [Comma] 를 선택했다. 그럼, 미리보기창에 보면 각각의 데이터가 Delimiter 기준으로 나눠짐을 볼 수 있다. [Next] 를 클릭하자.
5. 마지막 스텝. [Column data format] 의 기본값 [General] 을 확인하고, [Finish] 버튼을 클릭하면 변환작업이 모두 끝난다.
6. 변환작업이 모두 끝나면 아래의 그림처럼 [data.dat] 파일이 Excel 파일로 변환됐음을 확인할 수 있다.그리고 컴머로 구분된 자료들이 각각의 Excel 의 셀에 잘 위치하고 있음을 알 수 있다. 그리고 특별히 기억할 것은 지금 오픈한 파일의 이름이 Sheet 의 이름으로 들어온다는 것이다. 파일 아래의 Sheet 이름을 확인하자. 이건 매우 중요하다.
7. 이제 JDBC작업을 위해 이 data.dat 파일을 xls 파일로 변환하자. 한가지 아쉬운 점은 xlsx 즉 Excel 2007 버전 이상파일로 변환할 수 없다는 것이다. 그래서 필자는 할 수 없이 [다른 이름으로 저장]할 때 [Excel 97-2003 Workbook]으로 저장했다.
8. 필자는 C 드라이브의 Temp 폴더에 data.xls 라는 이름으로 저장했다.
9. 저장이 모두 끝났다.
10. 이제 ODBC 로 연결하자. [제어판] 으로 들어가서 [Performance and Maintenance] 로 가자.
11. [관리도구] [Administrative Tools] 로 가자.
12. [Data Source (ODBC)] 가 보인다. 더블클릭하자.
13. [ODBC Data Source Administrator] 창이 나타난다. 여러 탭 중에 [System DSN] 탭을 선택한다. 그리고 [Add] 버튼을 클릭하여 새로운 DSN 을 추가하자.
14. [Create New Data Source] 창이 나타났다. 목록 중에서 [Driver do Microsoft Excel(*.xls)] 을 선택한다. 왜냐하면 지금 ODBC 로 연결할 파일의 확장자가 xls 즉 Excel 파일이기 때문이다. [Finish] 버튼 클릭.
15. [Finish] 버튼을 클릭하면 [ODBC Microsoft Excel Setup] 창이 나타난다. 여기서 몇가지 중요한 포인트가 있다.
- Data Source Name : mydata (<-- 여러분들은 알아서 의미있는 이름을 주면 된다.)
Description : (<-- 굳이 작성하지 않아도 된다.)
[Select Workbook...] 버튼을 클릭하여 Excel 파일을 선택하도록 하자.
16. [Select Workbook]창이 나타난다. 여기서 위에서 xls 파일 저장한 디렉토리에 가서 저장한 파일을 지정한다. 그리고 [OK] 버튼을 클릭하여 창을 닫자.
17. 그러면 아래와 같이 [Version] 밑에 [Workbook:] 이 들어오고 방금 선택한 파일의 경로가 나온다. [OK] 버튼을 클릭하여 창을 닫자.
18. 아래 그림과 같이 [mydata] 라는 이름의 Data Source Name 이 완성됐다. [OK] 버튼을 클리하여 ODBC 관리자 창을 닫자.
19. 이제 Java 프로그래밍 할 차례이다. 아래와 같이 코딩했다.
이 코드에서 중요한 부분은
1) JDBC Driver 가 JDBC-ODBC Bridge Driver 라는 점.
2) JDBC url 은 jdbc:odbc:Data Source Name 이라는 점
3) Select 할 때 테이블의 이름은 Excel 의 Sheet 이름이며, Sheet 의 이름을 갖고 올 때 반드시 [Sheet Name$]로 해야한다는 점
4) Excel 파일의 각 셀에 저장한 값을 갖고 올 때 데이타타입별로 갖고 올 수 있다는 점. 즉 갖고 올 데이터가 정수이면 비록 텍스트파일에 저장돼있을 때 스트링이었다 하더라도 정수로 갖고 올 수 있다는 점이다.
20. 결과는 아래와 같다. 성공적으로 데이터를 갖고 온 것임을 알 수 있다. 이로써, 텍스트 파일이나 csv 혹은 xls 파일같은 비정형 데이터도 JDBC 에서 처리할 수 있다는 것을 확인했다. 재밌다. 여기서 한 가지 주의할 점은 Excel 파일의 데이터를 갖고 올 때 첫 행 글이 들어오지 않을 것이다. 이것은 첫 행은 헤더로 보기 때문이다. 그래서 Excel 파일에서는 첫 행에 반드시 제목을 주어야 한다. 잊지 말자.
※ 필자의 본 글을 작성하기 위해 참조한 사이트 주소를 소개합니다.
http://javaprogrammingforums.com/jdbc-database-tutorials/356-how-connect-excel-spreadsheet-using-jdbc-java.html
http://www.ehow.com/how_4810548_use-jdbc-connect-ms-excel.html
http://www.jdbctutorial.net/jdbc-read-data-microsoft-excel-sheet.php
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- CSS3
- ubuntu
- LECTURE
- Apache
- 리눅스
- AJAX
- ftp서버
- dev-c++
- Installation
- classpath
- javascript
- JDBC
- Windows 8.1
- Android
- Fedora14
- EditPlus
- 원격로그인
- mysql
- 우분투
- windows 7
- JAR
- Flex
- Fedora
- SQL
- Javadoc
- J2SE
- PHP
- Linux
- command tools
- Eclipse
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함