HSQLDB의 text table에 Excel 읽기 추가

2011 단어 ExcelextHSQLDB
HSQLDB는 매우 좋은 메모리 데이터베이스로 소량의 데이터를 처리하는 소형 데이터 응용에 매우 적합하다.
그 중에서texttable는 데이터 저장 방식을 확장했다. 이것은 csv 파일을 연결할 수 있고 이 테이블에 대한 모든 조작은 이 csv 파일에 나타난다.그러나 그는 excel을 데이터 원본으로 지원하지 않는다.
나는 이 기능을 추가했다.사고방식은 다음과 같다.
csv를 연결하려면 다음과 같이 써야 합니다.
 
SET TABLE table_1 SOURCE "data.csv;encoding=GB2312;"
 
데이터를csv table_1. 이렇게 하면 select, insert, update는 항상 이 csv에 나타난다. 이 사고방식에 따라 나의 목표는 다음과 같다.
SET TABLE table_1 SOURCE "data.xls;encoding=GB2312"

xls 파일을 정의합니다. 시스템도 처리할 수 있다면 얼마나 좋을까요!
 
만약에 시스템이 진정으로 처리하기 전에 검사를 하고 xls라고 판단되면 POI로 csv 파일로 바꾸고 이 csv 파일을 연결합니다.
 
최종적으로 찾았습니다. org.hsqldb.persist.TextCache에서 이러한 작업을 처리하여 다음을 수행합니다.
protected void initParams(Database database,String baseFileName) throws HsqlException {

안에 코드가 추가되었는데,
               if(fileName.endsWith(ExcelToCsv.EXT_XLS)) {
                	try {
						ExcelToCsv etc = new ExcelToCsv(fileName,tableprops.getProperty(ExcelToCsv.ROW_COUNT),tableprops.getProperty(ExcelToCsv.COL_COUNT));
						fileName = etc.parse();
					} catch (IOException e) {
						// TODO error handling
						e.printStackTrace();
					}
                }

그 중에서 ExcelToCsv는 제가 추가한 클래스입니다. Excel을 읽고 csv로 쓰는 데 사용됩니다.
 
실제 사용에서는 Excel 파일에 몇 개의 열과 몇 개의 줄을 제공해야 합니다(몇 줄에 대해 사전에 확정할 수 없으면 충분한 수를 줄 수 있습니다). 즉, 실제 사용에서 사용:
SET TABLE table_1 SOURCE "data.xls;encoding=GB2312;rowcount=200;colcount=11"

그중, 정의,table_1 이 테이블은 Excel에서 11열을 추출하고 최대 200줄을 추출합니다. (실제 Excel 파일에는 157줄만 있습니다.)
 
 
첨부 파일은 HSQLDB1.8.0.10 버전을 기반으로 이 기능을 추가한jar 및 관련 원본 코드입니다.
 
결함은 다음과 같습니다.
1. 위의 메커니즘을 바탕으로 set시에만 한 번 처리하면 이후table_1의 어떤 조작도 excel 파일에 반영되지 않고 csv에만 반영되지만 제 고객은 select만 있고 업데이트,delete가 없기 때문에 이 기능은 저에게 큰 도움이 되지 않습니다.
2. 일부 exception의 처리가 완벽하지 않다.
 
 
 
어느 맏이가 시간이 있으면 좀 보완해 주시오

좋은 웹페이지 즐겨찾기