Как создать базу данных sqllite3 в памяти?
Одно из подходящих применений для sqlite3-это "базы данных в памяти". Это звучит как действительно полезный инструмент для моих приложений C++. У кого-нибудь есть пример того, как это делается в C или C++? Я специально ищу канонический способ вставить несколько плоских файлов в базу данных в памяти, а затем выполнить некоторые соединения.
3 ответа:
На самом деле это довольно просто. Просто укажите ': memory: 'в качестве имени файла базы данных при открытии базы данных с помощью C / C++ API. Это особая константа, которую распознает двигатель. То же самое на самом деле работает и для других языков, таких как Python или Ruby, поскольку они обычно просто обертывают C/C++ API. См. http://sqlite.org/c3ref/open.html для получения полной информации.
Просто откройте файл: memory: и это должно сделать его (по крайней мере, это делает в PHP).
Вы упомянули, что хотите читать в нескольких плоских файлах и делать объединения на них. Если есть возможность хранить плоские файлы как базы данных SQLite, вы можете работать непосредственно с обоими, прикрепляя один к другому:
ATTACH foo.db AS foo
Затем обратитесь к таблицам в foo следующим образом:
SELECT * FROM foo.users
Таким образом, вы можете выполнять соединения без необходимости создания базы данных в памяти.
Если вы хотите, чтобы SQLite не использовал временные файлы в качестве журналов, например, вы не хотите никаких действий с файлами, кроме как при ручном запросе соединения, разъединения, присоединения или отсоединения. Затем используйте следующие две прагмы во время выполнения После подключения к базе данных": memory:".
PRAGMA temp_store=MEMORY; PRAGMA journal_mode=MEMORY;
Из документов .