Java开源思想&技术--xlSQL (关键字: Excel,Java,SQL)

来源:互联网 发布:知乎 惊悚悬疑电影 编辑:程序博客网 时间:2024/05/24 06:17
    首先,说明xlSQL的用途,在Java系统中通过SQL来操作Excel,就像操作数据库那样。
    当项目处于Phase1时,由于对Apache组织的POI比较熟练,本人写了个专门基于它的一个Component,以实现对Excel文件的操作。同时,又在服务器端为每张Excel创建了一个Table以映射,目的很简单,提高了速度和安全性能,当然这有着很大的弊端。
    后来,果然项目升级了,虽然可以为每个新的Excel动态Create Table,但是如果面对成千上万的Excel文件,是否要考虑考虑?我从Outlook的mail历史中,找到之前DM Frank发给我的一封信,xlSQL的简单用法,Research开始了。。。
    xlSQL最新版本是Y7,从网上搜索来看,使用的人不多,少的可怜的文档,甚至他的官方网站也关了(后来还是开了),也许真的很少有人会对Excel要直接CURD的吧,但是我就恰恰碰上了。
 
    在这里,我不打算把相关代码贴出来,只是总结一下他的思想和部分使用心得,也许有的朋友看到了会有些帮助。
    代码上,会用JDBC的人就可以使用它,下载的包里有一个很小的TestCase类,看一下就知道了。
    思想小结:
    1,默认的Datasource定位在他的包的bin目录下,启动时扫描预读bin目录所有的Excel文件。
    2,自启动HSQL/MySQL,用于和Excel交换数据(这个一直没有搞懂)。
    3,Driver名称com.nilostep.xlsql.jdbc.xlDriver。我们可以用Spring给他装一个连接池,以加快速度。
    4,SQL语句的表名,excel文件名.Sheet?,如“myexcel.Sheet1"。
    5,Select,查询结果就是ResultSet,大家很熟悉的吧。
    6,Insert,Update,Delete方面,这家伙比较笨可能,把原文件重写了一遍,所以别指望他帮你保留格式啊。而且Datasource必须关闭才能Commit到文件,否则只是在内存中进行,这一点提高了速度,不过它做的比较差的是内存中的操作历史没有log下来,这样,万一断电或者死机什么的,操作就白费了。然而Datasource关闭的最直接后果就是下次操作时需要重新连接(即使给他提供了Pool),这样的话又会扫描预读bin目录下的所有excel文件,很糟糕的是这需要不少时间,每个文件大概2s。(在寻找更好的解决方案)
    7,最后,还有个头痛的事情就是,每次重新启动必须要删除上次生成的3个文件,一般会在Tomcat的bin目录下xlsql*.*,不然会有错,启动不了xlSQL(这个也在想办法)。
  
    这里,说明一下,完全可以用POI解决它,但是如果大家不想重新发明轮子的话,可以考虑一下xlSQL,在使用这个家伙之前,请务必确认他的优势和弊端,权衡一下再作打算。
    由于这个方面的文档比较匮乏,所有的使用过程是在摸索中进行的,在中文的网页上真的很难找到,英文的也不多,基本上没有。有什么建议或者问题请直接留言。
 
 相关网站:
  www.nilostep.com (不知道这是否能叫他们官方网站)
  https://xlsql.dev.java.net/ (基本上这是网上最全的文档了,也没有超过一页)
  http://jimcaprioli.blogspot.com/ (xlSQL作者的blog,这里能找到一点点相关信息)
  http://forums1.itrc.hp.com/service/forums/questionanswer.do?threadId=649577(对我有些帮助的一个帖子,HP IT论坛)
  
Lastly, 3KS for your time.