Qual è il modo corretto per farlo? Copio solo il file .sq3?
Cosa succede se ci sono utenti sul sito e il file viene scritto mentre viene copiato?
Qual è il modo corretto per farlo? Copio solo il file .sq3?
Cosa succede se ci sono utenti sul sito e il file viene scritto mentre viene copiato?
Risposte:
Lo strumento da riga di comando sqlite3 include il .backup
comando punto .
Puoi connetterti al tuo database con:
sqlite3 my_database.sq3
ed esegui il comando punto di backup con:
.backup backup_file.sq3
Invece della connessione interattiva al database, puoi anche fare il backup e chiudere la connessione in seguito con
sqlite3 my_database.sq3 ".backup 'backup_file.sq3'"
In entrambi i casi il risultato è una copia denominata backup_file.sq3
del databasemy_database.sq3
.
È diverso dalla copia regolare dei file, perché si prende cura di tutti gli utenti che attualmente lavorano sul database. Sono presenti blocchi appropriati impostati sul database, quindi il backup viene eseguito esclusivamente.
sqlite3 m_database.sq3 ".backup m_database.sq3.bak"
.backup è il modo migliore.
sqlite3 my_database .backup my_database.back
puoi anche provare il comando .dump, che ti dà la possibilità di scaricare l'intero database o le tabelle in un file di testo. Se è specificato TABLE, solo le tabelle di dump che corrispondono al pattern LIKE TABLE.
sqlite3 my_database .dump > my_database.back
Un buon modo per creare una copia di archivio utilizzando dump e store, ricostruire il database in un secondo momento.
sqlite3 my_database .dump | gzip -c > my_database.dump.gz
zcat my_database.dump.gz | sqlite3 my_database
Controlla anche questa domanda I comandi .backup e .dump di SQLite3 bloccano il database?
.backup
non funziona come mostrato sopra ("argomento FILENAME mancante su .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();
}