介绍
在这个实验中,你将学习如何备份和恢复 SQLite 数据库。你将学习使用 .dump 命令将数据库导出到 SQL 文件,创建备份,然后从该备份恢复数据库。这对于保护你的数据至关重要。
创建一个示例数据库
在这一步中,你将创建一个示例 SQLite 数据库,并用一些数据填充它。这将为你提供一个可以练习备份和恢复的数据库。
首先,打开 SQLite shell(SQLite 命令行界面)。你将在这里与数据库进行交互。
sqlite3 mydatabase.db
这个命令启动 SQLite shell,并创建一个名为 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', 'alice@example.com');
INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com');
这些命令向 users 表添加了两行。第一行的名字是 'Alice',邮箱是 'alice@example.com'。第二行的名字是 'Bob',邮箱是 'bob@example.com'。
为了验证数据是否已正确插入,运行以下命令:
SELECT * FROM users;
你应该看到类似这样的输出:
1|Alice|alice@example.com
2|Bob|bob@example.com
此输出显示了 users 表的内容,确认数据已成功插入。
将数据库导出到 SQL 文件
在这一步中,你将把 mydatabase.db 数据库导出到一个名为 mydatabase.sql 的 SQL 文件。这个 SQL 文件将包含重新创建数据库及其数据所需的命令。
首先,退出 SQLite shell(SQLite 命令行界面):
.exit
这个命令关闭与数据库的连接,并返回到 Linux 终端。
现在,使用 .dump 命令将数据库导出到 SQL 文件:
sqlite3 mydatabase.db .dump > mydatabase.sql
这个命令使用 sqlite3 命令行工具连接到 mydatabase.db 数据库。.dump 命令告诉 SQLite 将整个数据库输出为一系列 SQL 命令。> 符号将 .dump 命令的输出重定向到一个名为 mydatabase.sql 的文件。
为了验证导出是否成功,你可以使用 cat 命令查看 mydatabase.sql 文件的内容:
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','alice@example.com');
INSERT INTO users VALUES(2,'Bob','bob@example.com');
COMMIT;
此输出显示了创建 users 表并插入数据的 SQL 命令。这确认数据库已成功导出到 SQL 文件。
创建数据库备份
在这一步中,你将使用相同的 .dump 命令创建数据库的备份。这本质上与导出到 SQL 文件的过程相同,但我们将把备份保存到不同的文件。
sqlite3 mydatabase.db .dump > mydatabase_backup.sql
这个命令创建 mydatabase.db 数据库的备份,并将其保存到名为 mydatabase_backup.sql 的文件中。
为了验证备份是否成功创建,你可以使用 cat 命令查看 mydatabase_backup.sql 文件的内容:
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 shell(SQLite 命令行界面)中打开数据库:
sqlite3 mydatabase.db
并查询 users 表:
SELECT * FROM users;
你应该看到已备份的数据:
1|Alice|alice@example.com
2|Bob|bob@example.com
这确认数据库已成功从备份文件恢复。
退出 SQLite shell(SQLite 命令行界面):
.exit
总结
在这个实验(Lab)中,你已经学习了如何备份和恢复 SQLite 数据库。你使用了 .dump 命令将数据库导出到 SQL 文件,然后你从该文件恢复了数据库。这些技能对于保护你的数据以及确保你可以从数据丢失中恢复至关重要。


