Загрузка базы данных SQLite в память Java с использованием JDBC? - PullRequest
0 голосов
/ 17 мая 2019

Обычно БД SQLite читается из файла. Каждая операция может потребовать файловой операции ввода-вывода, если база данных достаточно велика, и это может быть медленным.

Однако SQLite предоставляет способ загрузить базу данных в память, где к ней можно получить доступ с помощью URL JDBC, который выглядит примерно так: jdbc:memory...

Например, этот вопрос описывает, как этого добиться с помощью python: Как загрузить существующий файл БД в память в Python sqlite3?

Однако я не могу понять, как добиться того же в Java или Scala, используя JDBC.

Есть идеи?

1 Ответ

3 голосов
/ 17 мая 2019

Я только что попробовал с Xerial's 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...