如何获取通过 H2DB 创建的“内存”数据库的流?

Posted

技术标签:

【中文标题】如何获取通过 H2DB 创建的“内存”数据库的流?【英文标题】:How to get stream to "in-memory" database created via H2DB? 【发布时间】:2010-04-19 11:11:54 【问题描述】:

我必须创建这样一个机制:

    创建内存 (H2DB) 数据库; 创建表格并使用一些数据填充它们; 获取该数据库的流; 通过 WebDAV 或其他方式发送该流;

除了“如何将流传输到通过 H2DB 创建的“内存”数据库”之外,我什么都知道?


还有一些解释:

由于某些服务器限制,我无法创建文件; 我需要该流来创建文件;

【问题讨论】:

【参考方案1】:

您可以使用org.h2.tools.Script.execute(String url, String user, String password, OutputStream out) 从数据库创建 SQL 脚本。这甚至适用于内存数据库。

您可以使用所谓的“in-memory file system”。但是,要将文件作为流获取,您需要使用内部 H2 文件 API (org.h2.IOUtils.openFileInputStream)。

【讨论】:

感谢您提供指向文件系统选项的链接。与这个问题无关,但我发现 nioMapped FileSystem 对于我的 300MB 数据集要快几个数量级。【参考方案2】:

H2 支持 In-Memory Databases 使用数据库 URL jdbc:h2:mem:

附录:连接到数据库后,您可以使用jdbc 提交查询以获得所需的数据。 DatabaseMetaData 可能对全面访问有用。流格式将取决于预期的目标。

【讨论】:

是的,我知道如何创建数据库以及如何操作它。但我不知道如何“转储”数据库以流式传输并将该流发送到另一个应用程序。 我已经在上面详细说明了。你能在这种情况下澄清“转储”和“流”吗?

以上是关于如何获取通过 H2DB 创建的“内存”数据库的流?的主要内容,如果未能解决你的问题,请参考以下文章

H2DB:使用 AND 条件导致本地内存出错

如何找出 H2 DB 在内存中运行

PHP共享内存

21 内存的流

如何使用提议/答案交换来自两个对等连接的流

如何从我的流中获取数据并使用它?