将 Access 数据库数据克隆到 H2 之类的内存数据库?
Clone Access database data to in-memory database like H2?
我们在单个 Access .mdb 文件中有多种数据。这是一个既定的过程,无法更改:有几个 Excel 工作表,其中 VBA-macros 写入此 .mdb。
每次我们开始集成测试时都会访问此文件,这会导致并发修改异常 - 因为它位于内部共享 public 设备上。
当然我们可以将文件复制到本地文件夹并 运行 测试 - 但因为我想这样做 "the optimal way" 我更愿意将数据克隆到 memoryDB 中(比如H2) 每次启动集成测试时。
我 运行 在通过 UCanAccess 复制表 "one by one" 时遇到了几个问题,因为存在很多数据类型问题。现在的问题是:
Java 是否有可能将所有访问数据克隆到内存数据库(如 H2)而不考虑数据类型,如从访问类型到 ... jdbc 的映射-数据类型...对吗?
按照 Gord Thompson 的建议,我们将连接从
切换到我们的 MS-Access-DB
connection = DriverManager.getConnection("jdbc:ucanaccess://" + dbFile.getCanonicalPath() + ";", username, pass);
至
connection = DriverManager.getConnection("jdbc:ucanaccess://" + dbFile.getCanonicalPath() + ";memory=true", username, pass);
这就是想要的结果。 UCanAccess 完成了这项工作,因此无需使用 H2 解决上述数据类型问题。
我们在单个 Access .mdb 文件中有多种数据。这是一个既定的过程,无法更改:有几个 Excel 工作表,其中 VBA-macros 写入此 .mdb。
每次我们开始集成测试时都会访问此文件,这会导致并发修改异常 - 因为它位于内部共享 public 设备上。
当然我们可以将文件复制到本地文件夹并 运行 测试 - 但因为我想这样做 "the optimal way" 我更愿意将数据克隆到 memoryDB 中(比如H2) 每次启动集成测试时。
我 运行 在通过 UCanAccess 复制表 "one by one" 时遇到了几个问题,因为存在很多数据类型问题。现在的问题是: Java 是否有可能将所有访问数据克隆到内存数据库(如 H2)而不考虑数据类型,如从访问类型到 ... jdbc 的映射-数据类型...对吗?
按照 Gord Thompson 的建议,我们将连接从
切换到我们的 MS-Access-DB connection = DriverManager.getConnection("jdbc:ucanaccess://" + dbFile.getCanonicalPath() + ";", username, pass);
至
connection = DriverManager.getConnection("jdbc:ucanaccess://" + dbFile.getCanonicalPath() + ";memory=true", username, pass);
这就是想要的结果。 UCanAccess 完成了这项工作,因此无需使用 H2 解决上述数据类型问题。