Skip to content

sqlite3.exe

SQLite 官方命令行交互工具,是整套工具集的核心程序。

其它工具:sqlite3_rsync.exesqldiff.exesqlite3_analyzer.exe 是配套独立工具;sqlite3.exe 才是数据库交互终端

两种使用模式

1. 交互模式(进入 sqlite> 提示符)

cmd
sqlite3.exe test.db
  • 打开数据库文件,文件不存在则新建。
  • 输入SQL语句,以分号 ; 结尾执行。
  • 点命令(.开头)不是SQL,不需要分号,例如 .tables .schema .dump .read
sql
sqlite> SELECT count(*) FROM test_user;
sqlite> .tables
sqlite> .schema test_user
sqlite> .quit

2. 单行非交互模式(直接执行,不进入交互shell)

适合脚本/bat里面调用,非常常用

cmd
:: 执行单条SQL
sqlite3.exe test.db "SELECT count(*) FROM test_user;"

:: 输出到文件
sqlite3.exe test.db "SELECT * FROM test_user LIMIT 10;" > out.txt

:: 执行sql脚本文件
sqlite3.exe test.db < dump.sql

:: 直接执行点命令
sqlite3.exe test.db ".tables"

高频点命令汇总(仅sqlite3.exe可用,代码里不能执行)

.tables                    列出所有表
.schema                    查看全部建表语句
.schema test_user          查看单表建表语句
.dump                      导出全库SQL
.dump test_user            仅导出指定表
.output xxx.sql            将输出重定向到文件
.output stdout             切回控制台输出
.read xxx.sql              执行sql文件
.headers on                查询结果显示表头
.mode column               表格对齐输出
.mode csv                  输出csv格式
.import a.csv t_table      导入csv文件到表
.quit / .exit              退出

美化查询输出示例

sqlite> .headers on
sqlite> .mode column
sqlite> SELECT * FROM test_user LIMIT 5;

导出 CSV:

sqlite> .mode csv
sqlite> .output data.csv
sqlite> SELECT id,name FROM test_user;
sqlite> .output stdout

在 bat / shell 脚本常用写法示例

batch
@echo off
:: 获取表行数输出到变量
for /f %%i in ('sqlite3.exe test.db "SELECT COUNT(*) FROM test_user;"') do set cnt=%%i
echo total=%%cnt%%

:: 导出dump备份
sqlite3.exe test.db ".output backup.sql" ".dump" ".output stdout"

常用PRAGMA(SQL语句,可以在代码+命令行都执行)

sql
PRAGMA journal_mode=WAL;
PRAGMA synchronous=NORMAL;
PRAGMA foreign_keys=ON;
PRAGMA wal_checkpoint(FULL);
PRAGMA table_info(test_user);

容易混淆区分(重点)

程序能力是否能执行SQL
sqlite3.exe交互终端、导入导出dump、执行sql脚本
sqlite3_rsync.exe页级快照备份复制db文件❌不能跑SQL
sqldiff.exe对比两个库输出差异SQL❌不能跑SQL
sqlite3_analyzer.exe分析存储碎片报告❌不能跑SQL

关键点:

  1. .dump / .output / .read 这些点命令只有 sqlite3.exe 识别,rusqlite /其它驱动代码不能执行。
  2. 其它三个工具只做专项任务,不提供SQL解释器。

小坑

  1. 直接运行 sqlite3.exe 不带数据库文件名 → 打开内存临时数据库,退出全部丢失,很多人踩坑。
  2. SQL语句必须 ; 结尾;点命令不要加分号。
  3. Windows下如果输出中文乱码,命令行设置 chcp 65001