是否无法将数据库/目录导出到HSQLDB中的单个文件

时间:2014-01-09 16:03:58

标签: java sql database hsqldb

我正在刷新/重写我几年前写的数据分析应用程序。我想要实现的目标如下:

  • 我需要一个轻量级的数据库来进行查询,我决定使用HSQLDB。
  • 我将有2个申请;一个用于创建数据库,另一个用于进行分析(将由其他人使用)。我的意图是分析软件(多线程)将以只读方式使用数据库
  • DB可能会通过FTP分发,并且最好为分析软件的用户提供最小的麻烦(大多数技术不熟练)。

我对SQL的阅读不是很好,但我设法将信息输入表中并尝试了简单的查询。因此,为了完成“数据库创建者”应用程序,我只需要弄清楚如何“打包”数据库。

在生成数据库时,我已经使用 mem 文件“目录”as described in the HSQLDB user guide进行了实验。我看到它的方式,使用 mem 目录我无法将它们写入磁盘(稍后分发)和文件目录我有几个需要处理的文件:

  

文件:目录由2到6个文件组成,所有文件都相同   但具有不同的扩展名,位于同一目录中。对于   例如,名为“test”的数据库由以下文件组成:

     

•test.properties

     

•test.script

     

•test.log

     

•test.data

     

•test.backup

     

•test.lobs

     

属性文件包含有关数据库的一些设置。脚本文件包含表和其他数据库对象的定义,以及非高速缓存表的数据。日志文件包含   最近对数据库的更改。数据文件包含数据   缓存表和备份文件是最后一个的压缩备份   已知的一致状态       数据文件。所有这些文件都是必不可少的,不应删除。对于某些目录,test.data和test.backup文件   将不会出席。除了那些文件,还有一个HyperSQL数据库   任何地方都可以链接到任何格式化的文本文件,例如CSV列表   磁盘。

问题:

  1. 我认为*.script*.properties文件是最重要的文件,但指南明确指出所有文件都是必不可少的,不应删除。由于我的案例中没有*.data文件,并且生成我的数据库的所有数据都存储在*.script文件中(以明文形式),这让我觉得当我“打开”该文件时, JVM重新创建整个数据库。它是否正确?这不是一种非常低效的数据表示吗?

  2. 如果我在(1)中的理解是正确的,为什么其他文件必不可少?我需要分发它们吗?

  3. 如果(1)和(2)没有偏离轨道,那么我有什么选择来实现我的目标?例如,gzip所有文件并以这种方式传输它是否可行?然后我的分析软件需要在合理的位置打开它们,并在那里“拥挤”时不时进行清理......

1 个答案:

答案 0 :(得分:0)

  1. 如果没有* .data或* .lobs文件,则.script文件包含所有数据以及表定义。在这种情况下,JVM通过读取.script文件来重新创建数据库。

  2. 如果存在其他文件,则必不可少。如果您不使用LOB,则不会有.lobs文件。如果您没有磁盘表(CACHED表),则不会有.data文件。

  3. 您只能分发.script文件。每次打开此文件时,如果该文件不存在,将创建.properties文件。

  4. 如果您的数据库没有更改,您可以使用res:选项。对于更改并需要重新加载的数据库,请使用file:option。