Резервное копирование базы данных SQLite

SQLiteSQLiteBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этой лабораторной работе вы узнаете, как создавать резервные копии и восстанавливать базу данных SQLite. Вы научитесь экспортировать базу данных в SQL-файл с помощью команды .dump, создавать резервную копию, а затем восстанавливать базу данных из этой резервной копии. Это необходимо для защиты ваших данных.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sqlite(("SQLite")) -.-> sqlite/SQLiteGroup(["SQLite"]) sqlite/SQLiteGroup -.-> sqlite/init_db("Create SQLite Database") sqlite/SQLiteGroup -.-> sqlite/make_table("Create New Table") sqlite/SQLiteGroup -.-> sqlite/add_row("Insert Single Row") sqlite/SQLiteGroup -.-> sqlite/add_rows("Insert Multiple Rows") sqlite/SQLiteGroup -.-> sqlite/get_all("Select All Rows") sqlite/SQLiteGroup -.-> sqlite/query_where("Filter With WHERE") sqlite/SQLiteGroup -.-> sqlite/verify_table("Check Table Existence") subgraph Lab Skills sqlite/init_db -.-> lab-552548{{"Резервное копирование базы данных SQLite"}} sqlite/make_table -.-> lab-552548{{"Резервное копирование базы данных SQLite"}} sqlite/add_row -.-> lab-552548{{"Резервное копирование базы данных SQLite"}} sqlite/add_rows -.-> lab-552548{{"Резервное копирование базы данных SQLite"}} sqlite/get_all -.-> lab-552548{{"Резервное копирование базы данных SQLite"}} sqlite/query_where -.-> lab-552548{{"Резервное копирование базы данных SQLite"}} sqlite/verify_table -.-> lab-552548{{"Резервное копирование базы данных SQLite"}} end

Создание образца базы данных

На этом шаге вы создадите образец базы данных SQLite и заполните ее некоторыми данными. Это даст вам базу данных для практики резервного копирования и восстановления.

Сначала откройте оболочку SQLite (SQLite shell). Здесь вы будете взаимодействовать с базой данных.

sqlite3 mydatabase.db

Эта команда запускает оболочку SQLite и создает новый файл базы данных с именем mydatabase.db. Если файл уже существует, он откроет этот файл.

Теперь создайте таблицу с именем users со столбцами для id, name и email:

CREATE TABLE users (
    id INTEGER PRIMARY KEY,
    name TEXT,
    email TEXT
);

Эта SQL-команда создает таблицу с именем users. Столбец id является целым числом и первичным ключом (primary key), что означает, что он однозначно идентифицирует каждую строку в таблице. Столбцы name и email являются текстовыми полями.

Далее вставьте некоторые примеры данных в таблицу users:

INSERT INTO users (name, email) VALUES ('Alice', '[email protected]');
INSERT INTO users (name, email) VALUES ('Bob', '[email protected]');

Эти команды добавляют две строки в таблицу users. Первая строка имеет имя 'Alice' и адрес электронной почты '[email protected]'. Вторая строка имеет имя 'Bob' и адрес электронной почты '[email protected]'.

Чтобы убедиться, что данные были вставлены правильно, выполните следующую команду:

SELECT * FROM users;

Вы должны увидеть вывод, подобный этому:

1|Alice|[email protected]
2|Bob|[email protected]

Этот вывод показывает содержимое таблицы users, подтверждая, что данные были успешно вставлены.

Экспорт базы данных в SQL-файл

На этом шаге вы экспортируете базу данных mydatabase.db в SQL-файл с именем mydatabase.sql. Этот SQL-файл будет содержать команды, необходимые для воссоздания базы данных и ее данных.

Сначала выйдите из оболочки SQLite (SQLite shell):

.exit

Эта команда закрывает соединение с базой данных и возвращает вас в терминал Linux.

Теперь используйте команду .dump для экспорта базы данных в SQL-файл:

sqlite3 mydatabase.db .dump > mydatabase.sql

Эта команда использует инструмент командной строки sqlite3 для подключения к базе данных mydatabase.db. Команда .dump указывает SQLite вывести всю базу данных в виде серии SQL-команд. Символ > перенаправляет вывод команды .dump в файл с именем mydatabase.sql.

Чтобы убедиться, что экспорт прошел успешно, вы можете просмотреть содержимое файла mydatabase.sql с помощью команды cat:

cat mydatabase.sql

Вы должны увидеть вывод, подобный этому:

PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE users (
    id INTEGER PRIMARY KEY,
    name TEXT,
    email TEXT
);
INSERT INTO users VALUES(1,'Alice','[email protected]');
INSERT INTO users VALUES(2,'Bob','[email protected]');
COMMIT;

Этот вывод показывает SQL-команды, которые создают таблицу users и вставляют данные. Это подтверждает, что база данных была успешно экспортирована в SQL-файл.

Создание резервной копии базы данных

На этом шаге вы создадите резервную копию базы данных, используя ту же команду .dump. По сути, это тот же процесс, что и экспорт в SQL-файл, но мы сохраним резервную копию в другой файл.

sqlite3 mydatabase.db .dump > mydatabase_backup.sql

Эта команда создает резервную копию базы данных mydatabase.db и сохраняет ее в файл с именем mydatabase_backup.sql.

Чтобы убедиться, что резервная копия была создана успешно, вы можете просмотреть содержимое файла mydatabase_backup.sql с помощью команды cat:

cat mydatabase_backup.sql

Вы должны увидеть тот же вывод, что и на предыдущем шаге, подтверждая, что файл резервной копии содержит SQL-команды, необходимые для воссоздания базы данных.

Восстановление базы данных из резервной копии

На этом шаге вы восстановите базу данных из файла mydatabase_backup.sql. Это воссоздаст базу данных и ее данные из резервной копии.

Сначала давайте смоделируем сценарий, в котором исходная база данных утеряна. Удалите файл mydatabase.db:

rm mydatabase.db

Эта команда удаляет файл mydatabase.db из файловой системы.

Теперь восстановите базу данных из файла mydatabase_backup.sql:

sqlite3 mydatabase.db < mydatabase_backup.sql

Эта команда использует инструмент командной строки sqlite3 для создания нового файла базы данных с именем mydatabase.db. Символ < перенаправляет содержимое файла mydatabase_backup.sql в команду sqlite3, которая выполняет SQL-команды в файле. Это воссоздает базу данных и ее данные.

Чтобы убедиться, что восстановление прошло успешно, откройте базу данных в оболочке SQLite (SQLite shell):

sqlite3 mydatabase.db

И запросите таблицу users:

SELECT * FROM users;

Вы должны увидеть данные, которые были сохранены в резервной копии:

1|Alice|[email protected]
2|Bob|[email protected]

Это подтверждает, что база данных была успешно восстановлена из файла резервной копии.

Выйдите из оболочки SQLite:

.exit

Итог

В этой лабораторной работе вы узнали, как создавать резервные копии и восстанавливать базу данных SQLite. Вы использовали команду .dump для экспорта базы данных в SQL-файл, а затем восстановили базу данных из этого файла. Эти навыки необходимы для защиты ваших данных и обеспечения возможности восстановления после потери данных.