2010-01-10 11 views
14

Je voudrais construire une application web avec un moteur de base de données H2. Cependant, je ne sais toujours pas comment sauvegarder les données alors que la base de données est en cours d'exécution après avoir lu ce tutoriel:Comment sauvegarder le moteur de base de données H2 intégré pendant son exécution?

http://www.h2database.com/html/tutorial.html#upgrade_backup_restore

sortie H2 Est-ce que le fichier stocké quelque part dans le système de fichiers? Puis-je simplement sauvegarder les fichiers en sortie?

+0

double possible de [Comment dans H2DB se décharge sql comme dans MySql?] (http://stackoverflow.com/questions/3256694/how-in-h2db-get-sql-dump-like-in-mysql) – Abdull

Répondre

11

H2 est stocké sur le système de fichiers, mais il serait préférable d'utiliser les outils de sauvegarde que vous référencez, car le format de fichier peut changer entre les versions de H2. Si vous mettez à niveau H2, il ne sera peut-être plus capable de lire les fichiers créés dans une version précédente. Aussi, si vous copiez les fichiers qu'il utilise, je vous recommande de fermer la base de données en premier, sinon les fichiers copiés peuvent être illisibles par H2.

L'emplacement du fichier dépend de l'URL jdbc que vous spécifiez. Voir la FAQ: http://www.h2database.com/html/faq.html

5

Selon le tutorial you linked, il est recommandé de ne pas sauvegarder la base de données en copiant les fichiers en cours d'exécution. Voici la bonne façon de sauvegarder la base de données en cours d'exécution (le code Scala, mais peut être facilement converti en Java) (Source):

val connection:java.sql.Connection = ??? // get a database connection 
connection.prepareStatement("BACKUP TO 'myFile.zip'").executeUpdate