Pregunta

Uno de los usos apropiados para sqlite3 es " bases de datos en memoria " ;. Esto suena como una herramienta realmente útil para mis aplicaciones C ++. ¿Alguien tiene un ejemplo de cómo se hace esto en C o C ++? Estoy buscando específicamente una forma canónica de sorber varios archivos planos en una base de datos en memoria, luego hacer algunas combinaciones.

¿Fue útil?

Solución

En realidad es bastante fácil. Simplemente especifique ': memoria:' como el nombre del archivo de la base de datos al abrir una base de datos utilizando la API C / C ++. Es una constante especial que el motor reconocerá. Lo mismo realmente funciona para otros lenguajes como Python o Ruby, ya que generalmente solo envuelven la API C / C ++. Consulte http://sqlite.org/c3ref/open.html para obtener detalles completos.

Otros consejos

Simplemente abra el archivo: memoria: y eso debería hacerlo (al menos lo hace en PHP).

Menciona que desea leer en varios archivos planos y hacer uniones en ellos. Si es posible almacenar los archivos planos como bases de datos SQLite, puede trabajar directamente con ambos adjuntando uno al otro:

ATTACH foo.db AS foo

Luego consulte las tablas en foo así:

SELECT * FROM foo.users

De esta forma, puede hacer sus uniones sin la necesidad de crear una base de datos en memoria.

Si desea que SQLite no use archivos temporales como diarios, por ejemplo, no desea ninguna actividad de archivo que no sea cuando solicita manualmente una conexión, desconexión, conexión o desconexión. Luego use los siguientes dos pragmas en tiempo de ejecución después de conectarse a su " memoria: " base de datos.

PRAGMA temp_store=MEMORY;
PRAGMA journal_mode=MEMORY;

De los documentos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top