需要熟练的 SQLite 备份/还原-导出/导入操作与总结

一、动机

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 备份、导入和导出的操作方式,希望这些总结能够帮助阅读者。

相关推荐
kyriewen18 分钟前
我排查了一个React内存泄漏——罪魁祸首是这3个被忽略的清理函数
前端·javascript·面试
IT_陈寒24 分钟前
我又被JavaScript的隐式类型转换坑了
前端·人工智能·后端
用户83562907805127 分钟前
Python Word 转 PDF 和 PDF 转 Word 指南
后端·python
用户83562907805138 分钟前
如何使用 Python 加密和保护 Word 文档
后端·python
其美杰布-富贵-李1 小时前
03 ref、reactive 与 computed 响应式数据
前端·javascript·vue.js
OpenTiny社区1 小时前
GenUI SDK v1.3.0 发布|多框架兼容,一键换物料,渲染器 & 演练场全面增强!
前端·ai编程
用户938515635071 小时前
useRef + Web Worker 实战:React 如何优雅地拥抱多线程
前端·javascript·react.js
他们叫我秃子1 小时前
前端开发转 Go 全栈(五):终于遇到熟人了,Go 的闭包和高阶函数原来这么像 JavaScript
前端·后端·go
SomeB1oody1 小时前
【RustyML入门】2.6. 线性判别分析
开发语言·后端·机器学习·rust·教程
用户61595868000221 小时前
从 0 写一个迷你 wujie:用原生 Web API 实现微前端
前端