Was ist der richtige Weg, um es zu tun? Kopiere ich nur die .sq3-Datei?
Was ist, wenn sich Benutzer auf der Site befinden und die Datei während des Kopierens geschrieben wird?
Was ist der richtige Weg, um es zu tun? Kopiere ich nur die .sq3-Datei?
Was ist, wenn sich Benutzer auf der Site befinden und die Datei während des Kopierens geschrieben wird?
Antworten:
Das Befehlszeilentool sqlite3 enthält den .backup
Befehl dot .
Sie können eine Verbindung zu Ihrer Datenbank herstellen mit:
sqlite3 my_database.sq3
und führen Sie den Sicherungspunktbefehl aus mit:
.backup backup_file.sq3
Anstelle der interaktiven Verbindung zur Datenbank können Sie auch die Sicherung durchführen und die Verbindung anschließend mit schließen
sqlite3 my_database.sq3 ".backup 'backup_file.sq3'"
In beiden Fällen ist das Ergebnis eine Kopie mit dem Namen backup_file.sq3
der Datenbank my_database.sq3
.
Es unterscheidet sich vom regulären Kopieren von Dateien, da es sich um alle Benutzer kümmert, die derzeit an der Datenbank arbeiten. Für die Datenbank sind geeignete Sperren festgelegt, sodass die Sicherung ausschließlich erfolgt.
sqlite3 m_database.sq3 ".backup m_database.sq3.bak"
.backup ist der beste Weg.
sqlite3 my_database .backup my_database.back
Sie können auch den Befehl .dump ausprobieren, mit dem Sie die gesamte Datenbank oder Tabellen in eine Textdatei sichern können. Wenn TABLE angegeben ist, werden nur Dump-Tabellen ausgegeben, die dem LIKE-Muster TABLE entsprechen.
sqlite3 my_database .dump > my_database.back
Rekonstruieren Sie die Datenbank zu einem späteren Zeitpunkt, um mithilfe von Dump and Store eine Archivierungskopie zu erstellen.
sqlite3 my_database .dump | gzip -c > my_database.dump.gz
zcat my_database.dump.gz | sqlite3 my_database
Überprüfen Sie auch diese Frage. Sperren die SQLite3-Befehle .backup und .dump die Datenbank?
.backup
funktioniert nicht wie oben gezeigt ("fehlendes FILENAME-Argument auf .backup")
try {
final String inFileName = "/data/data/your app package/databases/db";
File dbFile = new File(inFileName);
FileInputStream fis = new FileInputStream(dbFile);
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/CALC/Backup";
File dir = new File(path);
if (!dir.exists()) dir.mkdirs();
String outFileName = path + "/filename"; // output file name
// Open the empty db as the output stream
OutputStream output = new FileOutputStream(outFileName);
// Transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) > 0) {
output.write(buffer, 0, length);
}
Toast.makeText(getActivity(), "Backup Successfully", 2).show();
// Close the streams
output.flush();
output.close();
fis.close();
}
catch (Exception e) {
e.printStackTrace();
}