Normalmente, um db SQLite é lido a partir de um arquivo. Cada operação pode exigir uma operação de arquivo I / O se o db é grande o suficiente, e isso pode ser lento.
No entanto SQLite fornece uma maneira de carregar o db para a memória - onde ele pode ser acessado através de um url JDBC que é algo comojdbc:memory...
Por exemplo, esta questão descreve como conseguir isso usando python: Como carregar o arquivo db existente para a memória em Python sqlite3?
No entanto, eu não consigo descobrir como conseguir a mesma coisa em Java ou Scala usando JDBC.
Alguma ideia?
Eu apenas tentei com sqlite-jdbc-3.27.2.1.jar de Xerial e parece que eles nos deixaram restore from
um arquivo de banco de dados nativo (binário) SQLite em um :memory:
banco de dados da seguinte forma:
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);
}