Ich bin neu in Hsqldb-Datenbank. Ich möchte wissen, wie man Backup und Wiederherstellung der Hsqldb-Datenbank durch Java-Code macht.Sicherung und Wiederherstellung von Hsqldb-Datenbank in Java-Code
Antwort
Verwenden Sie den Befehl BACKUP DATABASE TO
. Hier
ist ein Link zu der Dokumentation:
HSQLDB System Management Documentation
ich nicht getestet haben, aber ich glaube, es ist etwas entlang der Linien von:
String backup = "BACKUP DATABASE TO " + "'" + filePath + "' BLOCKING";
PreparedStatement preparedStatement = connection.prepareStatement(backup);
preparedStatement.execute();
Sie wollen werden wickle es natürlich in einen try-catch-Block.
Soweit die Wiederherstellung der Datenbank geht, denke ich, dass Sie dies ausführen müssen, während die Datenbank mit der DbBackupMain-Anwendung offline ist. So würden Sie diesen Befehl in der Befehlszeile eingeben:
java -cp hsqldb.jar org.hsqldb.lib.tar.DbBackupMain --extract tardir/backup.tar dbdir
mit 'DbBackupMain', kann ich den lokalen Pfadnamen in ** tardir * angeben * Platzhalter? Ich möchte es an einem bestimmten Ort. Ich habe die Datenbank ** HSQL ** in D: \ Database \ hsqldb \ path extrahiert und meine Datenbank befindet sich in D: \ Database \ HSQLDatabase \ path. Wie kann ich dies angeben, um eine Sicherung zu erstellen? in D: \ Datenbank \ Backup \ diesen Pfad? Bitte helfen Sie – Bhat
mithilfe der 'PreparedStatement' Ausführung Backup-Erstellung. Aber es erstellt die mehreren Kopien im angegebenen Pfad. Wie ändere ich, um das existierende Update zu aktualisieren? Damit ich ein Exemplar der Backup-Datei – Bhat
Jede HyperSQL Datenbank einen Katalog genannt wird. Abhängig davon, wie die Daten gespeichert sind, gibt es drei Arten von Katalogen.
Typen von Katalogdaten:
mem: vollständig im RAM gespeichert - ohne Persistenz über das Leben des JVM-Prozess
Datei:
in Dateisystem-Dateien gespeichertres: in einer Java-Ressource wie einem Jar gespeichert und immer nur lesbar
Sichern Sie einen laufenden Katalog, rufen Sie eine JDBC-Verbindung ab, und geben Sie in SQL einen BACKUP DATABASE-Befehl aus. In seiner einfachsten Form sichert das folgende Befehlsformat die Datenbank als einzelne .tar.gz-Datei im angegebenen Verzeichnis.
BACKUP DATABASE TO <directory name> BLOCKING [ AS FILES ]
Der Verzeichnisname muss mit einem Schrägstrich als ein Verzeichnis zu unterscheiden, und die ganze Zeichenfolge in einfachen Anführungszeichen wie so sein muss: ‚subdir/nesteddir /‘.
Um einen Offline-Katalog zu sichern, muss sich der Katalog im heruntergefahrenen Zustand befinden. Sie werden einen Java-Befehl wie
java -cp hsqldb.jar org.hsqldb.lib.tar.DbBackupMain --save tardir/backup.tar dbdir/dbname
ausführen. In diesem Beispiel hat die Datenbank den Namen dbname und befindet sich im Verzeichnis dbdir. Die Sicherung wird in einer Datei namens backup.tar im tardir-Verzeichnis gespeichert.
Dabei ist tardir/backup.tar ein Dateipfad zur Datei * .tar oder * .tar.gz, die in Ihrem Dateisystem erstellt werden soll, und dbdir/dbname ist der Dateipfad zum Basisnamen der Katalogdatei.
Sie verwenden DbBackup in der Befehlszeile Ihres Betriebssystems zu Wiederherstellen einen Katalog von einem Backup.
java -cp hsqldb.jar org.hsqldb.lib.tar.DbBackupMain --extract tardir/backup.tar dbdir
wo tardir/backup.tar einen Dateipfad TAR zum * oder * tar.gz-Datei zu lesen, und dbdir ist das Zielverzeichnis der Katalogdateien in zu extrahieren. Beachten Sie, dass dbdir einen Verzeichnispfad ohne den Basisnamen der Katalogdatei angibt. Die Dateien werden mit den in der TAR-Datei gespeicherten Namen erstellt. Weitere Details refer
wirklich gut verwalten kann !!! – Xelian
So in Java + SPring + JdbcTemplate
Backup (On-line):
@Autowired
public JdbcTemplate jdbcTemplate;
public void mainBackupAndRestore() throws IOException {
...
jdbcTemplate.execute("BACKUP DATABASE TO '" + sourceFile.getAbsolutePath() + "' BLOCKING");
}
Dies wird .properties, .scripts und .lobs Datei speichern ein tar in sourceFile.getAbsolutePath().
Restore:
DbBackupMain.main(new String[] { "--extract", baseDir.getAbsolutePath(),
System.getProperty("user.home") + "/restoreFolder" });
Diese Dateien von baseDir.getAbsolutePath erhalten wird() und wird sie in Userhome/restoreFolder setzen, wo Sie, wenn alles in Ordnung ist wieder herstellen zu überprüfen. Lobs enthält Lob/Blob-Daten, Skripte enthält ausgeführte Abfragen.
Können Sie nicht einfach die db-Datei kopieren? – MadProgrammer
Bitte [siehe] (http://www.hsqldb.org/doc/2.0/guide/management-chapt.html#mtc_backup) – SparkOn