HSQLDB是一个非常好的内存数据库,对于处理少量数据的小型数据应用非常适合。
其中,text table更是扩展了数据存储的方式,它可以将一个csv文件挂接进来,进而,对这个表的全部操作都将在这个csv文件中体现出来。但是,他不支持excel作为数据源。
我增加了这个功能。思路如下:
如果我们想要挂接一个csv,那么需要写:
SET TABLE table_1 SOURCE "data.csv;encoding=GB2312;"
表示把data.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,而不会update, delete,所以这个功能对我用处不大;
2、一些exception的处理没有写完善;
哪位老大有时间,完善一把呗
分享到:
相关推荐
通过对Text表特性的深入了解和应用,可以极大地提高数据处理效率和灵活性,尤其是在需要频繁读取外部数据文件的应用场景中。 总之,HSQLDB中的Text表功能是一个强大的工具,它不仅增强了HSQLDB处理文本文件的能力,...
**Text Table**:文本表的读取速度较慢,因为需要从磁盘读取文件,但数据是持久化的。 C. **Cached Table**:缓存表在内存和磁盘之间进行平衡,初次读取时可能较慢,但后续访问会更快,因为数据会被缓存。 在调试...
HSQldb是一个轻量级的关系型数据库管理系统,特别适合用于系统演示、开发和测试环境。它的特点是快速、灵活且易于使用。HSQldb支持多种运行模式,满足不同场景的需求。 1. **数据库实例创建** 创建HSQldb数据库...
- **轻量级**:HSQLDB具有小巧的体积,对硬件资源需求低,适合于内存数据库和嵌入式环境。 - **高性能**:HSQLDB设计精良,查询速度快,尤其在处理大量数据时表现出良好的性能。 - **SQL兼容性**:HSQLDB高度遵循SQL...
2. **SQL问题**:探讨了HSQLDB对SQL标准的支持程度,包括对各种SQL语句(如SELECT、UPDATE等)的解释和示例,以及如何使用HSQLDB来管理数据完整性约束。 3. **UNIX下快速起步**:提供了一套适用于UNIX系统的快速入门...
- **对SQL标准的支持**:HSQLDB遵循并扩展了SQL标准,支持复杂的查询语法。 - **约束和索引**: - **主键**:定义主键时,系统会自动创建一个唯一的索引。 - **唯一性索引**:可以手工创建,提高查询性能。 - **...
2. **增强的SQL支持**:HSQldb致力于遵循SQL标准,1.9.0版本可能增加了对更多SQL92和SQL99标准的支持,比如窗口函数、子查询优化等,这将使开发者能够编写更复杂的查询语句。 3. **安全性改进**:新的版本可能提升...
HSQldb因其小巧、高效以及对Java应用的良好支持,常被用于开发、测试和部署阶段,尤其是对于那些对数据存储需求不高但又需快速启动的项目。 在本压缩包中,提供的HSQldb版本为2.25,特别之处在于它是针对JDK 1.5...
**HSQldb 概述** HSQldb,全称 HyperSQL Database,是一个开源、轻量级、完全Java编写的数据库管理系统。它支持多种数据库模式,包括纯内存储存、文件系统存储以及网络服务器模式,使其在多种场景下都能发挥效用。...
HyperSQL是用Java编写的一款SQL关系数据库引擎 它的核心完全是多线程的 支持双向锁和MVCC 多版本并发控制 几乎完整支持ANSI 92 SQL 支持常见数据类型 最新版本增加了对BLOB和CLOB数据的支持 最高支持达64T的数据量 ...
3. **新的SQL功能**:增加了对更多SQL标准的支持,如窗口函数、子查询改进等,增强了数据库的灵活性和表达能力。 4. **增强的并发控制**:改进了多用户环境下的并发性能,保证了数据的一致性。 三、使用HSQLDB的...
3. **创建表**:通过SQL语句`CREATE TABLE`定义表结构,如`CREATE TABLE Users (id INT PRIMARY KEY, name VARCHAR(50))`。 4. **插入数据**:使用`INSERT INTO`语句插入数据,如`INSERT INTO Users VALUES (1, '...
**HSQldb 2.2.8 数据库详解** HSQldb(HyperSQL Database)是一款高效、轻量级且开源的Java数据库管理系统,它在IT领域中被广泛应用于开发、测试以及小型应用环境。HSQldb完全用Java编写,因此具有良好的跨平台性,...
hsqldb数据库下载,很好用,简易的内存数据库,特别适合初学者。