Bunu yapmanın doğru yolu nedir? .Sq3 dosyasını mı kopyalıyorum?
Ya sitede kullanıcılar varsa ve dosya kopyalanırken yazılıyorsa?
Bunu yapmanın doğru yolu nedir? .Sq3 dosyasını mı kopyalıyorum?
Ya sitede kullanıcılar varsa ve dosya kopyalanırken yazılıyorsa?
Yanıtlar:
Sqlite3 komut satırı aracı .backup
nokta komutuna sahiptir .
Veritabanınıza şu şekilde bağlanabilirsiniz:
sqlite3 my_database.sq3
ve yedekleme nokta komutunu şu şekilde çalıştırın:
.backup backup_file.sq3
Veritabanına etkileşimli bağlantı yerine yedeklemeyi yapabilir ve daha sonra bağlantıyı kapatabilirsiniz.
sqlite3 my_database.sq3 ".backup 'backup_file.sq3'"
Her iki durumda da sonuç, backup_file.sq3
veritabanının adlandırılmış bir kopyasıdır my_database.sq3
.
Düzenli olarak dosya kopyalamadan farklıdır, çünkü şu anda veritabanı üzerinde çalışan herhangi bir kullanıcıyla ilgilenir. Veritabanında ayarlanmış uygun kilitler vardır, bu nedenle yedekleme özel olarak yapılır.
sqlite3 m_database.sq3 ".backup m_database.sq3.bak"
.backup en iyi yoldur.
sqlite3 my_database .backup my_database.back
.dump komutunu da deneyebilirsiniz, bu size tüm veritabanını veya tabloları bir metin dosyasına dökme yeteneği sağlar. TABLE belirtilirse, yalnızca LIKE pattern TABLE ile eşleşen döküm tabloları.
sqlite3 my_database .dump > my_database.back
Döküm ve depolamayı kullanarak arşiv kopyası oluşturmanın iyi bir yolu, Veritabanını daha sonra yeniden yapılandırın.
sqlite3 my_database .dump | gzip -c > my_database.dump.gz
zcat my_database.dump.gz | sqlite3 my_database
Ayrıca bu soruyu kontrol edin SQLite3 .backup ve .dump komutları veritabanını kilitliyor mu?
.backup
3.8.2'de yukarıda gösterildiği gibi çalışmıyor (".backup üzerinde eksik FILENAME bağımsız değişkeni")
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();
}