java - 将嵌入式 H2 数据库加载到内存

标签 java jdbc h2

我正在编写一个带有嵌入式 H2 数据库的可移植应用程序。所以,有两种情况:

  1. 应用程序正在从可写存储(闪存、硬盘等)运行

    这是默认情况。我使用 db 文件并将数据存储到该文件中。

    数据源 = new JdbcDataSource(); dataSource.setURL("jdbc:h2:./"+ dbfile + ";MVCC=FALSE;MV_STORE=FALSE");

  2. 应用程序正在从只读存储(例如 CD、smb、tsclient 等)运行

    在本例中,我使用数据库打开文件,然后在内存中创建数据库

    JdbcDataSource 内存 = new JdbcDataSource();

    memory.setURL("jdbc:h2:mem:default");

    然后我使用包含大量 SELECT...INSERT... 的脚本将所有数据从 fileDB 复制到 memoryDB

有没有办法直接将数据库从文件加载到内存? 也许我可以以更优雅的方式复制表格?

最佳答案

您可以执行SCRIPT命令:

SCRIPT TO '[some_location]'

将数据库的当前状态编写到文件系统中。然后使用RUNSCRIPT命令:

RUNSCRIPT FROM '[some_location]'

创建 jdbc:h2:mem 连接后加载数据库。 SCRIPT TO 和 RUNSCRIPT 对于这种类型的翻译非常方便,并为大型数据库文件提供可选的压缩。

关于java - 将嵌入式 H2 数据库加载到内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35870788/

相关文章:

spring - 如何从 H2 中的时间戳列中提取日期

java - 制作 GImage 时出现 NullPointerException

java - 需要凯撒密码中的代码解释

java - Spring 启动 1.4 : Executing Method after Liquibase finished

java - JDBC 和 PostgreSQL - 如何根据另一个 int 在同一行中插入 int

java.jdbc clojure 执行!插入数

java - 在 Java 中 DB2 JDBC : How can one use null parameters in a WHERE clause for a SELECT statement where the value can be either null or not null?

mysql - 错误的 SQL 语法...未找到列 "COUNT(status)"

java - Spring Boot Amazon AWS S3 存储桶文件下载 - 访问被拒绝

java - H2 with MODE=Oracle 导致 'Schema "information_schema"not found'