Quelle est la bonne façon de le faire? Dois-je simplement copier le fichier .sq3?
Que faire s'il y a des utilisateurs sur le site et que le fichier est en cours d'écriture pendant sa copie?
Quelle est la bonne façon de le faire? Dois-je simplement copier le fichier .sq3?
Que faire s'il y a des utilisateurs sur le site et que le fichier est en cours d'écriture pendant sa copie?
Réponses:
L'outil de ligne de commande sqlite3 comprend la .backup
commande dot .
Vous pouvez vous connecter à votre base de données avec:
sqlite3 my_database.sq3
et exécutez la commande backup dot avec:
.backup backup_file.sq3
Au lieu de la connexion interactive à la base de données, vous pouvez également faire la sauvegarde et fermer la connexion par la suite avec
sqlite3 my_database.sq3 ".backup 'backup_file.sq3'"
Dans tous les cas, le résultat est une copie nommée backup_file.sq3
de la base de données my_database.sq3
.
C'est différent de la copie régulière de fichiers, car il prend en charge tous les utilisateurs travaillant actuellement sur la base de données. Il y a des verrous appropriés définis sur la base de données, la sauvegarde est donc effectuée exclusivement.
sqlite3 m_database.sq3 ".backup m_database.sq3.bak"
.backup est le meilleur moyen.
sqlite3 my_database .backup my_database.back
vous pouvez également essayer la commande .dump, elle vous donne la possibilité de vider toute la base de données ou les tables dans un fichier texte. Si TABLE est spécifié, vider uniquement les tables correspondant au modèle LIKE TABLE.
sqlite3 my_database .dump > my_database.back
Un bon moyen de faire une copie d'archivage en utilisant dump and store, Reconstruisez la base de données ultérieurement.
sqlite3 my_database .dump | gzip -c > my_database.dump.gz
zcat my_database.dump.gz | sqlite3 my_database
Vérifiez également cette question. Les commandes SQLite3 .backup et .dump verrouillent-elles la base de données?
.backup
ne fonctionne pas comme indiqué ci-dessus ("argument FILENAME manquant sur .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();
}