Bagaimana cara yang tepat untuk melakukannya? Apakah saya hanya menyalin file .sq3?
Bagaimana jika ada pengguna di situs dan file sedang ditulis saat sedang disalin?
Bagaimana cara yang tepat untuk melakukannya? Apakah saya hanya menyalin file .sq3?
Bagaimana jika ada pengguna di situs dan file sedang ditulis saat sedang disalin?
Jawaban:
Alat baris perintah sqlite3 menampilkan .backup
perintah titik .
Anda dapat terhubung ke database Anda dengan:
sqlite3 my_database.sq3
dan jalankan perintah titik cadangan dengan:
.backup backup_file.sq3
Selain koneksi interaktif ke database, Anda juga dapat melakukan backup dan menutup koneksi setelahnya dengan
sqlite3 my_database.sq3 ".backup 'backup_file.sq3'"
Bagaimanapun hasilnya adalah salinan bernama backup_file.sq3
dari database my_database.sq3
.
Ini berbeda dari penyalinan file secara teratur, karena menangani semua pengguna yang saat ini mengerjakan database. Ada kunci yang tepat yang ditetapkan pada database, sehingga pencadangan dilakukan secara eksklusif.
sqlite3 m_database.sq3 ".backup m_database.sq3.bak"
.backup adalah cara terbaik.
sqlite3 my_database .backup my_database.back
Anda juga dapat mencoba perintah .dump, ini memberi Anda kemampuan untuk membuang seluruh database atau tabel ke dalam file teks. Jika TABLE ditentukan, hanya dump tabel yang cocok dengan pola LIKE TABLE.
sqlite3 my_database .dump > my_database.back
Cara yang baik untuk membuat salinan arsip menggunakan dump and store, Rekonstruksi database di lain waktu.
sqlite3 my_database .dump | gzip -c > my_database.dump.gz
zcat my_database.dump.gz | sqlite3 my_database
Periksa juga pertanyaan ini Apakah perintah SQLite3 .backup dan .dump mengunci database?
.backup
tidak berfungsi seperti yang ditunjukkan di atas ("argumen FILENAME hilang pada .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();
}