一、动机
SQLite 数据的备份-导入-导出等操作是除去 CURD,数据库的基本操作,我们需要熟练操作并掌握这些技能,高效的完成技能。SQLite 数据库在本使用特别方便,值得前后端开发都学习。
本文适合对 SQLite 不熟悉,或者对这一块内容不成系统的同学学习。主要讲解的内容包含:备份/导出/导入/脚本
等。并且基于单个文件 xxx.db
文件。
二、SQLite 数据库的优点
- 免费开源
- 0 配置
- 无服务器
- 轻量级
- 支持事务
三、 安装
🚀sqlite🚀 根据自己的需求下载并安装,正确安装之后你就会得到一个
sqlite
或者sqlite3
的命令。
sh
sqlite3
# 输出内容,默认在内容保存,可以通过 .open xxxx.db 打开文件
SQLite version 3.43.1 2023-09-11 12:01:27
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>
四、开始之前
命令 | 作用 |
---|---|
.tables |
显示当前数据库中的所有表格名称。 |
.show |
显示当前设置的参数和设置。 |
.mode |
设置输出模式,分别以 JSON、CSV 或 SQL 格式显示查询结果。 |
.table_info |
显示指定表格的列信息,包括列名、数据类型和约束信息。 |
.backup |
将整个数据库备份到指定文件中。 |
.dump |
将整个数据库导出为 SQL 脚本。 |
.output |
将输出重定向到指定文件中。 |
.schema |
显示指定表格的创建 SQL 语句,包括表格的结构和约束。 |
五、备份
备份命令
sh
sqlite3 your_database.db ".backup backup_file.db"
# 不要进入 sqlite3 的交互式环境直接在命令输出示例:
sqlite3 ./dev.db ".backup backup.db"
# 还原 db 文件直接复制即可
# sql
sqlite3 your_database.db .dump > backup_file.sql
# 从 sql 还原
sqlite3 new_database.db < backup_file.sql
备份分为两种模式,第一个是 db 文件,使用 .backup
指定备份文件 backup_file.db
, 第二章中式 sql,备份 sql
文件需要 .dump
来完成。还原方式页不要不一样。
复制数据库文件
在拷贝数据数据库时,数据库没有被使用。此方法是系统级的方法。
定时备份
如果在服务器中,可以设置定时任务,定期执行脚本(cron) 定时操作数据库。此处只是提出方案。
六、导出
导出 SQL 文件
sh
# cd your db dir
.output output_filename.sql
.dump
.output stdout
特点:能够输出所有的 sql 文件。
导出 csv 文件
sh
.mode csv # 指定模式
.output output_filename.csv # 输出的文件,没有会创建一个文件
SELECT * FROM your_table_name; # 指定你的数据库名,同时注意此处有分号
.output stdout # 输出内容
导出 csv 文件需要使用 SQL 语句配合 .mode/.output
命令。不能直接输出一个 db 里面的所有数据。当然你也可以使用编程语言 Node.js/python 等,查询对应的数据,然后输出 csv 使用编程语言,更加灵活。
导出 json 文件
sh
.mode json
.output output_filename.json
SELECT * FROM your_table_name;
.output stdout
导出 json 与导出 csv 基本相同。指定模式是 json, 指定输出的 json 文件。
自定义导出
以输出 txt 文件为例,指出需要输出的文件名 output_filename.txt
和 sql 查询语句。
ts
.output output_filename.txt
SELECT column1 || ', ' || column2 AS custom_format FROM your_table_name;
.output stdout
导出 excel
SQLite 不支持直接导出 excel 文件,可以使用工具转化。
七、导入
- 默认支持:SQL 和 CSV 两种文件格式。
CSV
sh
.mode csv
.import data.csv your_table_name
SQL
sh
.read data.sql
使用编程语言
使用 python 和 node.js 链接到数据库,然后执行 SQL insert 语句来插入数据。
八、小结
SQLite 数据库实用性非常强,在习了 CURD 能力之后,对数据的 备份/还原
和对数据的导出/导入
就有了需求。SQLite 可以定义为全栈开发者的第一个数据库,不需要数据库服务器,一个文件即可搞定。本文主要讲解是 SQLite 备份、导入和导出的操作方式,希望这些总结能够帮助阅读者。