`
stevezheng
  • 浏览: 81411 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

给HSQLDB的text table增加对Excel的读取

    博客分类:
  • java
阅读更多

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的处理没有写完善;

 

 

 

哪位老大有时间,完善一把呗

  • excel_datasource.zip (20.7 KB)
  • 描述: 原代码和测试,我已经以Patch方式提交了原代码给HSQLDB opensource,去那里down也可以。
  • 下载次数: 21
  • hsqldb.jar (697.3 KB)
  • 描述: 增加了这个功能的jar
  • 下载次数: 5
3
0
分享到:
评论

相关推荐

    Windows系统字体转unifont字体v2.0(grub4dos字体生成工具)

    在IT领域,尤其是在图形设计和跨平台应用开发中,字体的选择和使用是非常关键的。"Windows系统字体转unifont字体工具"是一个专门用于将Windows操作系统中的字体转换为unifont格式的工具。这个工具的主要目标是帮助用户解决在不同操作系统之间字体兼容性的问题,特别是对于那些需要支持大量字符集,如Unicode的项目。 Unifont是一种开放源代码的字体,包含了几乎所有的Unicode字符,因此在多语言环境和开源软件中特别受欢迎。它提供了一种统一的视觉体验,确保无论在哪种操作系统或设备上,都能准确显示各种语言的文字。然而,Windows系统默认的字体并不包含所有Unicode字符,这可能导致在某些情况下无法正确显示非标准字符。 转换过程涉及以下几个核心知识点: 1. **字体格式**:Windows系统中常见的字体格式有TrueType(.ttf)和OpenType(.otf),而unifont是一种特殊的Bitmap字体,通常以.gz ufnt或.ttf.gz形式存在。Bitmap字体将每个字符绘制为位图,适合低分辨率屏幕或嵌入式系统,但可能在高分辨率下显得模糊。

    uClinux源代码中Make文件完全解析.pdf.rar

    uClinux源代码中Make文件完全解析.pdf.rar

    最新更新!上市公司股吧舆论数据(2008-2023年)

    ## 介绍 进入互联网新媒体时代,“股吧”作为一类专门针对上市公司的社交媒介,已经成为中小投资者分享投资经验和发表对公司运营意见的重要平台,股吧舆论作为投资者情绪的反映,直接影响股票的市场表现。 ## 一、上市公司股吧舆论数据的介绍 “股吧”作为新兴社交媒体代表,本身并不提供信息,仅提供多方交互平台,其将个体间的实时交流和回应形成公众关注和舆论;因此,股吧舆论数据可以帮助研究人员深入分析网络舆论与企业表现之间的关系,并为投资者提供情绪波动的参考依据。 本分享数据年份为2008年到2023年,数据来源于东方财富网股吧,涉及A股上市公司的讨论情况,涵盖了股吧发帖数量、阅读量、评论次数等多个维度。 ## 二、数据指标

    【东海证券-2025研报】公司深度报告:AIOT次新品显著放量,产品矩阵拓展布局新市场.pdf

    【东海证券-2025研报】公司深度报告:AIOT次新品显著放量,产品矩阵拓展布局新市场.pdf

    基于SpringBoot的图书管理系统(源码+数据库+万字文档+ppt)358

    图书管理系统,系统包含两种角色:管理员、用户,系统分为前台和后台两大模块,主要功能如下。 前台: - 首页:展示系统的概览信息。 - 图书信息:展示图书的详细信息。 - 公告信息:展示图书馆相关的通知公告。 - 在线咨询:提供在线客服咨询服务。 - 个人中心:用户可以登录后进入个人中心 后台: 管理员角色: - 个人中心:管理员可以管理个人信息,修改密码等。 - 用户管理:管理员可以对用户的信息进行增删改查等操作。 - 图书分类管理:管理员可以管理图书分类信息,添加、修改、删除分类名称及其描述。 - 图书信息管理:管理员可以管理图书的基本信息。 - 系统管理:管理员可以管理系统的一些通用配置。 二、项目技术 编程语言:Java 数据库:MySQL 项目管理工具:Maven 前端技术:Vue 后端技术:SpringBoot 三、运行环境 操作系统:Windows、macOS都可以 JDK版本:JDK1.8以上都可以 开发工具:IDEA、Ecplise、Myecplise都可以 数据库: MySQL5.7以上都可以 Maven:任意版本都可以

    企业数字化转型IT信息化战略.pdf

    企业数字化转型IT信息化战略.pdf

    LB1Q-PHP+MySql_1个通用条件工资成绩等通用查询系统手机加强版版(Utf-8)_2024最终版.zip

    LB1Q-PHP+MySql_1个通用条件工资成绩等通用查询系统手机加强版版(Utf-8)_2024最终版

    基于Python卷积神经网络人脸识别驾驶员疲劳检测与预警系统+源码+文档(毕业设计)

    基于Python卷积神经网络人脸识别驾驶员疲劳检测与预警系统+源码+文档(毕业设计)本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上,适合正在准备毕业设计或者大作业的学生和实战人员,可作为毕业设计、大作业,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 基于Python卷积神经网络人脸识别驾驶员疲劳检测与预警系统+源码+文档(毕业设计)基于Python卷积神经网络人脸识别驾驶员疲劳检测与预警系统+源码+文档(毕业设计)基于Python卷积神经网络人脸识别驾驶员疲劳检测与预警系统+源码+文档(毕业设计)基于Python卷积神经网络人脸识别驾驶员疲劳检测与预警系统+源码+文档(毕业设计)基于Python卷积神经网络人脸识别驾驶员疲劳检测与预警系统+源码+文档(毕业设计)基于Python卷积神经网络人脸识别驾驶员疲劳检测与预警系统+源码+文档(毕业设计)基于Python卷积神经网络人脸识别驾驶员疲劳检测与预警系统+源码+文档(毕业设计)基于Python卷积神经网络人脸识别驾驶员疲劳检测与预警系统+源码+文档(毕业设

    江门市乡镇边界,矢量边界,shp格式

    矢量边界,行政区域边界,精确到乡镇街道,可直接导入arcgis使用

    平芯微PW4584应用电路pcb,ad格式

    平芯微PW4584应用电路pcb,ad格式

    基于SpringBoot的民宿管理系统(源码+数据库+万字文档)336

    民宿管理系统,系统包含两种角色:管理员、用户,系统分为前台和后台两大模块,主要功能如下。 前台功能: 1. 首页:展示民宿的相关信息和推荐房源。 2. 房间信息:用户可以查看房间的详细信息。 3. 论坛:用户可以在论坛上进行讨论和交流。 4. 公告信息:展示民宿的公告信息,包括优惠活动、重要通知等。 5. 个人中心:用户可以管理个人信息、订单记录、收藏房源等。 后台功能: 用户: 1. 个人中心:管理个人信息。 2. 房间信息管理:管理房间信息,包括添加、编辑、删除房间信息。 3. 论坛管理:管理论坛帖子,包括查看、删除、置顶等操作。 4. 公告信息管理:管理公告信息,包括添加、编辑、删除公告等操作。 管理员: 1. 个人中心:管理个人信息。 2. 管理员管理:管理其他管理员账号,包括添加、编辑、删除管理员等操作。 3. 基础数据管理:管理基础数据,包括地区信息、设施信息等。 4. 房间信息管理:管理房间信息,包括添加、编辑、删除房间信息。 5. 论坛管理:对论坛帖子进行管理,包括查看、删除、置顶等操作。 6. 公告信息管理:管理公告信息,包括添加、编辑、删除公告等操作。

    30012第9章MCS-51单片机IO接口技术20140413.ppt

    30012第9章MCS-51单片机IO接口技术20140413.ppt

    【最新版】 JESD22-A104F.01 2023.rar

    【最新版】 JESD22-A104F.01 2023.rar

    基于SpringBoot的船舶维保管理系统(源码+数据库+万字文档)381

    船舶维保管理系统,系统包含四种角色:管理员、船家、维保人员、维保公司,系统分为前台和后台两大模块,主要功能如下。 船家: - 个人中心:管理个人信息。 - 公告管理:查看和发布系统公告。 - 船舶管理:管理自己的船舶信息。 - 维保公司管理:选择和管理维保公司。 - 维保计划管理:制定和管理船舶的维保计划。 - 故障上报管理:上报船舶的故障情况。 维保公司: - 个人中心:管理个人信息。 - 公告管理:查看和发布系统公告。 - 船舶管理:管理负责的船舶信息。 - 维保人员管理:管理维保人员的信息。 - 维保计划管理:制定和管理船舶的维保计划。 - 故障上报管理:接收和处理船舶的故障上报。 - 维修成本管理:记录和统计维修过程中的成本。 维保人员: - 个人中心:管理个人信息。 - 公告管理:查看系统公告。 - 船舶管理:管理负责的船舶信息。 - 维保计划管理:查看和执行船舶的维保计划。 - 故障上报管理:上报船舶的故障情况。 - 维修成本管理:记录和统计维修过程中的成本。

    LW3T-PHP+TXT_3个通用条件工资成绩等通用查询系统电脑网页版版(Utf-8)_2024最终版.zip

    LW3T-PHP+TXT_3个通用条件工资成绩等通用查询系统电脑网页版版(Utf-8)_2024最终版

    【东兴证券-2025研报】食品饮料行业:市场预期逐渐改变,关注短期估值修复行情.pdf

    【东兴证券-2025研报】食品饮料行业:市场预期逐渐改变,关注短期估值修复行情.pdf

    基于SpringBoot的毕业就业信息管理系统(源码+数据库+万字文档)328

    毕业就业信息管理系统,系统包含三种角色:管理员、公司、用户,系统分为前台和后台两大模块,主要功能如下。 前台: 首页:展示毕业就业信息管理平台的相关内容。 公司:浏览和搜索招聘公司的信息。 简历:学生上传和管理自己的简历,进行简历投递。 公告信息:查看和发布最新的就业相关公告信息。 职位招聘:浏览和搜索最新的职位招聘信息。 个人中心:管理个人信息和简历。 后台(管理员): 个人中心:管理个人信息。 管理员管理:管理其他管理员账号的信息。 基础数据管理:管理系统中的基础数据, 公司管理:管理招聘公司的信息, 简历管理:管理学生上传的简历信息, 就业统计管理:统计毕业生的就业情况。 公告信息管理:发布和管理最新的就业相关公告信息。 简历投递管理:管理简历投递情况, 学生管理:管理学生账号信息, 职位招聘管理:管理职位招聘信息, 轮播图信息:管理系统的轮播图信息, 用户: 个人中心:管理个人信息和简历。 简历管理:上传和管理个人的简历信息。 就业统计管理:查看和更新个人的就业情况。 公告信息管理:查看最新的就业相关公告信息。 简历投递管理:查看个人简历投递情况和审核进度。 职位招聘

    君の850云端女孩全面屏.apk

    君の850云端女孩全面屏.apk

    HuggingFace自然语言处理详解:基于BERT中文模型的任务实战.pdf

    关注有更多资源,私免费的得

Global site tag (gtag.js) - Google Analytics