Как правильно это сделать? Я просто скопирую файл .sq3?
Что делать, если на сайте есть пользователи и во время копирования файл записывается?
Как правильно это сделать? Я просто скопирую файл .sq3?
Что делать, если на сайте есть пользователи и во время копирования файл записывается?
Ответы:
Инструмент командной строки sqlite3 содержит команду .backup
точки .
Вы можете подключиться к своей базе данных с помощью:
sqlite3 my_database.sq3
и запустите команду точки резервного копирования с помощью:
.backup backup_file.sq3
Вместо интерактивного подключения к базе данных вы также можете сделать резервную копию и затем закрыть соединение с помощью
sqlite3 my_database.sq3 ".backup 'backup_file.sq3'"
В любом случае результатом будет копия с именем backup_file.sq3
базы данных my_database.sq3
.
Это отличается от обычного копирования файлов, поскольку оно заботится обо всех пользователях, работающих в настоящее время с базой данных. В базе данных установлены надлежащие блокировки, поэтому резервное копирование выполняется исключительно.
sqlite3 m_database.sq3 ".backup m_database.sq3.bak"
.backup - лучший способ.
sqlite3 my_database .backup my_database.back
вы также можете попробовать команду .dump, она дает вам возможность выгрузить всю базу данных или таблицы в текстовый файл. Если указано TABLE, дампить только таблицы, соответствующие шаблону LIKE TABLE.
sqlite3 my_database .dump > my_database.back
Хороший способ сделать архивную копию с помощью дампа и сохранения, реконструировать базу данных позже.
sqlite3 my_database .dump | gzip -c > my_database.dump.gz
zcat my_database.dump.gz | sqlite3 my_database
Также проверьте этот вопрос. Блокируют ли базы данных команды SQLite3 .backup и .dump?
.backup
не работает, как показано выше («отсутствует аргумент FILENAME в .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();
}