SQLite作为嵌入式关系型数据库,自带了一个名为sqlite3的命令行工具。它不需要启动独立服务,直接通过终端就能完成建库、建表、增删改查以及导出数据等操作。对于做本地缓存、移动端存储或者小型工具开发的场景,熟练使用这个命令行工具可以极大提升调试效率。

一、连接与打开数据库
最基础的用法是在终端输入sqlite3命令进入交互界面,如果后面跟上文件名,则会直接打开或新建对应的数据库文件。当文件不存在时,SQLite会在第一次执行写操作时才真正创建文件,这点与一些强制建文件的数据库不同。
进入交互模式后,可以使用.open指令在会话中切换数据库。例如已经进入了sqlite3但想换一个库,就不用退出再重进。下面的示例展示了从新建库到切换库的过程:
-- 终端直接新建并打开 test.db sqlite3 test.db -- 在交互模式中切换到 another.db .open another.db -- 查看当前打开的数据库文件路径 .database
需要注意的是,如果.open后面跟的是相对路径,它是相对于你启动命令行时的当前工作目录,而不是相对于上一个库文件的位置。不少新手在这里弄错路径,导致以为数据没保存。
二、查看结构与元数据命令
在排查数据问题的时候,先弄清表结构是关键。SQLite提供了一组以点开头的元命令(dot command)来展示元数据,这些命令不是SQL语句,结尾不需要分号。
常用的是.tables列出所有表,.schema查看建表语句,.indexes看索引。如果想看某个具体表的结构,可以给.schema传表名。示例如下:
-- 列出当前库所有表 .tables -- 查看 users 表的建表 SQL .schema users -- 查看所有索引 .indexes
这些命令背后实际是查询了SQLite内部的sqlite_master系统表。如果你用SQL去查sqlite_master,能看到更原始的信息,比如表的rootpage和完整的sql字段。但在日常快速浏览时,点命令明显更省事。
三、查询结果的格式化输出
默认情况下,sqlite3命令行输出的数据是没有列名、也没有分隔符对齐的,看起来非常乱。通过几个格式化命令可以大幅改善可读性。
.headers on开启列名显示,.mode column让结果按列对齐,.timer on可以显示每条语句执行耗时。组合使用之后,输出效果接近图形化客户端。代码演示:
-- 开启列名 .headers on -- 列对齐模式 .mode column -- 打开耗时统计 .timer on -- 正常 SQL 查询 SELECT id, name FROM users LIMIT 5;
除了column模式,还有.mode json和.mode csv等。如果你要把数据交给别的程序处理,csv模式配合.once命令直接导出文件会非常高效,避免自己写脚本转换。
四、数据导入与导出
命令行工具不仅查数据方便,做数据迁移也很顺手。导入CSV用.import,导出可以用.dump生成SQL脚本,或者用前面说的mode加重定向。
下面示例把一个csv文件导入到表里,并把整个库导出成sql文件。注意导入前要先建好表结构,且字段顺序和csv一致,否则会错位。
-- 先建表 CREATE TABLE logs(ts TEXT, msg TEXT); -- 导入 csv,指定分隔符为逗号 .mode csv .import data.csv logs -- 导出整个库为 SQL 文本 .output backup.sql .dump .output stdout
.dump导出的内容包含建表语句和INSERT数据,可以直接在另一个SQLite库里用.read执行恢复。这种方式比拷贝数据库文件更通用,也方便做版本差异对比。
五、执行SQL文件与批处理
当有一堆SQL要跑时,交互模式一行行敲很不现实。可以把语句写进文件,用.read在会话里执行,或者直接用命令行非交互模式批量跑。
非交互模式适合写脚本,比如每天定时初始化数据。下面展示了两种做法:
-- 方式一:进入 sqlite3 后读取文件 sqlite3 my.db .read init.sql -- 方式二:终端直接执行文件中的 SQL sqlite3 my.db < init.sql
在init.sql里可以混合普通SQL和点命令,但点命令在非交互的<重定向方式下部分不支持,所以复杂初始化建议用.read。另外,给sqlite3加-batch参数可禁止交互提示,避免脚本卡住。
六、常用辅助与退出命令
还有一些小命令能提升使用体验。.help列出全部点命令,.quit或.exit退出,.show查看当前所有格式设置。
如果误操作进了乱糟糟的输出状态,用.show确认配置,再重新设置即可。示例如下:
-- 查看当前设置 .show -- 退出 .quit
掌握上面这些SQLite命令行工具常用命令,基本就能脱离图形界面完成绝大部分本地数据库任务。建议在自己机器上建个测试库,把每个命令都敲一遍,比只看文档记忆深刻得多。
SQLitesqlite3_commandcommand_line修改时间:2026-08-11 20:27:33