Wie erstelle ich eine sqlite3 In-Memory-Datenbank?
-
08-07-2019 - |
Frage
Einer der angemessen verwendet sqlite3 ist "in-Memory-Datenbanken". Das klingt wie ein wirklich nützliches Werkzeug für meine C ++ Anwendungen. Hat jemand ein Beispiel davon, wie dies in C oder C ++ durchgeführt wird? Ich bin speziell für eine kanonische Weise suchen, mehr Flach Dateien in eine In-Memory-Datenbank zu schlürfen, dann tut einiger beitritt.
Lösung
Es ist eigentlich ganz einfach. angeben, nur ‚: Speicher:‘ als Datenbankdateinamen, wenn eine Datenbank unter Verwendung des C / C ++ API öffnen. Es ist eine spezielle Konstante, dass der Motor erkennt. Das gleiche funktioniert eigentlich für andere Sprachen wie Python oder Ruby, da sie in der Regel wickeln nur die C / C ++ API. Siehe http://sqlite.org/c3ref/open.html für nähere Details.
Andere Tipps
Sie einfach die Datei öffnen: Speicher:. Und das sollte es tun (zumindest tut es in PHP)
Sie erwähnen, dass Sie in mehreren flachen Dateien lesen wollen und tun schließt sich an ihnen. Wenn es möglich ist, die flachen Dateien als SQLite-Datenbanken zu speichern, können Sie direkt mit beiden arbeiten von einem zum anderen Befestigungs:
ATTACH foo.db AS foo
Dann auf die Tabellen in foo beziehen sich wie folgt:
SELECT * FROM foo.users
So können Sie Ihre verbindet, ohne die Notwendigkeit für die Schaffung eines In-Memory-Datenbank tun können.
Wenn Sie SQLite wollen nicht temporäre Dateien wie Zeitschriften verwenden, beispiel, Sie wollen keine Dateiaktivität außer wenn Sie fordert manuell ein Verbinden, Trennen, anschließen oder entfernen. Dann nutzen Sie die folgenden beiden Pragmas zur Laufzeit, nachdem Sie eine Verbindung zu Ihrem „: memory:“. Datenbank
PRAGMA temp_store=MEMORY;
PRAGMA journal_mode=MEMORY;
Von den docs.