Question

L'une des utilisations appropriées pour sqlite3 est une" base de données en mémoire ". Cela semble être un outil vraiment utile pour mes applications C ++. Quelqu'un at-il un exemple de la façon dont cela se fait en C ou C ++? Je cherche en particulier un moyen canonique d’insérer plusieurs fichiers à plat dans une base de données en mémoire, puis de faire des jointures.

Était-ce utile?

La solution

C'est en fait assez facile. Spécifiez simplement ': memory:' comme nom de fichier de la base de données lors de l'ouverture d'une base de données à l'aide de l'API C / C ++. C'est une constante spéciale que le moteur reconnaîtra. La même chose fonctionne réellement pour d'autres langages tels que Python ou Ruby, puisqu'ils enveloppent généralement l'API C / C ++. Voir http://sqlite.org/c3ref/open.html pour plus de détails.

Autres conseils

Il suffit d'ouvrir le fichier: memory: et cela devrait le faire (du moins en PHP).

Vous indiquez que vous souhaitez lire plusieurs fichiers plats et y faire des jointures. S'il est possible de stocker les fichiers à plat en tant que bases de données SQLite, vous pouvez travailler directement avec les deux en les connectant l'un à l'autre:

ATTACH foo.db AS foo

Puis reportez-vous aux tables de foo comme suit:

SELECT * FROM foo.users

De cette façon, vous pouvez effectuer vos jointures sans qu'il soit nécessaire de créer une base de données en mémoire.

Si vous souhaitez que SQLite n'utilise pas de fichiers temporaires en tant que journaux, vous ne souhaitez par exemple aucune activité dans les fichiers lorsque vous demandez manuellement une connexion, une déconnexion, une connexion ou une déconnexion. Ensuite, utilisez les deux pragmas suivants au moment de l’exécution après vous être connecté à votre " memory: " base de données.

PRAGMA temp_store=MEMORY;
PRAGMA journal_mode=MEMORY;

Extrait de la docs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top