如何获取通过 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 创建的“内存”数据库的流?的主要内容,如果未能解决你的问题,请参考以下文章