2011-07-18 6 views
8

¿Tiene HSQLDB algún mecanismo para guardar datos en memoria en un archivo?Tiene HSQLDB algún mecanismo para guardar datos en memoria en un archivo?

Como sé que después de que el servidor está shutted abajo, todos los datos en memoria se vuelven inaccesibles. Así que quiero guardar todos los datos en memoria en el archivo. Desafortunadamente no puedo usar el mecanismo BACKUP, porque no se puede aplicar a los datos en la memoria.

Respuesta

8

bases de datos HSQLDB son de diferentes tipos. Las bases de datos integradas en la memoria no almacenan los datos en el disco. Estas bases de datos tienen URL con el formato jdbc:hsqldb:mem:<name>.

Si la URL de su base de datos es en forma jdbc:hsqldb:file:<file path> y las tablas son las tablas de memoria predeterminada, los datos están todos en la memoria, pero los cambios se escriben en un conjunto de archivos de disco.

Con todos los tipos de base de datos, incluida all_in_memory, puede usar la instrucción SQL SCRIPT <file path> para guardar la base de datos completa en un archivo. Si guarda los datos en un archivo con la extensión .script, puede abrir el archivo como una base de datos de archivos.

Cuando se ejecuta un servidor, la dirección URL de se utilizan sin el prefijo jdbc:hsqldb, por ejemplo server.database.0=file:C:/myfile

Ver la guía aquí http://hsqldb.org/doc/2.0/guide/running-chapt.html#running_db-sect

+0

¿Se HSQLDB escribir archivos temporales en el disco y luego borrarlos, cuando estoy usando el URL db como JDBC: hsqldb: mem: , y estoy insertar una fila en una tabla? Estoy implementando mi aplicación Java Mule ESB en cloudhub. Funciona bien en local, pero no en la nube. Parece que cloudhub no permite escribir archivos. La aplicación funciona bien cuando comento db insert y devuelvo la respuesta ficticia. Un – RuntimeException

+1

mem: base de datos (JDBC URL: hsqldb: mem: ) no escribe nada en el sistema de archivos. – fredt

+0

@fredt si excluimos archivos temporales – Antoniossss

6

Hay un comando SQL para eso. Prueba esto:

SCRIPT '/tmp/data.sql' 

Ver here para más detalles.

Cuestiones relacionadas