Domanda

Uno degli usi appropriati per sqlite3 è " database in memoria " ;. Sembra uno strumento davvero utile per le mie applicazioni C ++. Qualcuno ha un esempio di come questo viene fatto in C o C ++? Sto specificatamente cercando un modo canonico per slurpare diversi file flat in un database in memoria, quindi fare alcuni join.

È stato utile?

Soluzione

In realtà è abbastanza semplice. Basta specificare ': memory:' come nome file del database quando si apre un database usando l'API C / C ++. È una costante speciale che il motore riconoscerà. Lo stesso funziona in realtà per altri linguaggi come Python o Ruby, poiché in genere avvolgono semplicemente l'API C / C ++. Vedi http://sqlite.org/c3ref/open.html per i dettagli completi.

Altri suggerimenti

Basta aprire il file: memory: e questo dovrebbe farlo (almeno lo fa in PHP).

Dici di voler leggere diversi file flat e di unirti ad essi. Se è possibile archiviare i file flat come database SQLite, è possibile lavorare direttamente con entrambi collegando uno all'altro:

ATTACH foo.db AS foo

Quindi fai riferimento alle tabelle in foo in questo modo:

SELECT * FROM foo.users

In questo modo è possibile eseguire i join senza la necessità di creare un database in memoria.

Se si desidera che SQLite non utilizzi i file temporanei come journal, ad esempio, non si desidera alcuna attività sui file diversa da quando si richiede manualmente una connessione, disconnessione, collegamento o scollegamento. Quindi utilizza i due pragmi seguenti in fase di runtime dopo esserti connesso alla tua ": memoria: " banca dati.

PRAGMA temp_store=MEMORY;
PRAGMA journal_mode=MEMORY;

Dai documenti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top