使用 JDBC 将 SQLite db 加载到 Java 内存中?

Cli*_*ote 3 java sqlite scala jdbc

通常从文件中读取 SQLite 数据库。如果数据库足够大,每个操作都可能需要文件 I/O 操作,这可能会很慢。

然而,SQLite 提供了一种将数据库加载到内存的方法 - 可以使用看起来像的 JDBC url 访问它jdbc:memory...

例如,这个问题描述了如何使用 python 实现这一点:How to load existing db file to memory in Python sqlite3?

但是我不知道如何使用 JDBC 在 Java 或 Scala 中实现相同的功能。

有任何想法吗?

Gor*_*son 7

我刚刚尝试使用 Xerial 的 sqlite-jdbc-3.27.2.1.jar,看起来他们让我们restore from将本机(二进制)SQLite 数据库文件放入:memory:数据库中,如下所示:

try (Connection conn = DriverManager.getConnection("jdbc:sqlite::memory:")) {
    try (Statement st = conn.createStatement()) {
        st.execute("restore from C:\\__tmp\\thing.sqlite");

        // let's see if we can read one of the tables
        ResultSet rs = st.executeQuery("SELECT * FROM Table1");
        while (rs.next()) {
            System.out.println(rs.getString(1));
        }
    }

} catch (Throwable e) {
    e.printStackTrace(System.err);
}
Run Code Online (Sandbox Code Playgroud)