SQLite命令行工具 #
一、命令行工具概述 #
1.1 启动sqlite3 #
bash
-- 启动sqlite3
sqlite3
-- 打开或创建数据库
sqlite3 myapp.db
-- 打开内存数据库
sqlite3 :memory:
-- 执行SQL后退出
sqlite3 myapp.db "SELECT * FROM users;"
-- 执行SQL文件
sqlite3 myapp.db < script.sql
1.2 命令行选项 #
bash
sqlite3 [options] [database] [sql]
-- 常用选项:
-- -help 显示帮助
-- -version 显示版本
-- -init file 执行初始化文件
-- -echo 显示SQL命令
-- -header 显示列名
-- -column 列格式输出
-- -csv CSV格式输出
-- -separator sep 设置分隔符
-- -nullvalue str 设置NULL显示值
二、内置命令 #
2.1 帮助和退出 #
bash
sqlite> .help -- 显示帮助
sqlite> .help .dump -- 显示.dump命令帮助
sqlite> .quit -- 退出
sqlite> .exit -- 退出
2.2 数据库操作 #
bash
-- 打开数据库
sqlite> .open myapp.db
-- 打开内存数据库
sqlite> .open :memory:
-- 查看数据库列表
sqlite> .databases
-- 附加数据库
sqlite> ATTACH DATABASE 'other.db' AS other;
-- 分离数据库
sqlite> DETACH DATABASE other;
2.3 表操作 #
bash
-- 查看所有表
sqlite> .tables
-- 查看特定模式的表
sqlite> .tables user%
-- 查看表结构
sqlite> .schema users
-- 查看所有表结构
sqlite> .schema
-- 查看完整表信息
sqlite> .schema --indent users
2.4 索引操作 #
bash
-- 查看所有索引
sqlite> .indexes
-- 查看特定表的索引
sqlite> .indexes users
三、输出格式 #
3.1 输出模式 #
bash
-- 列模式(推荐)
sqlite> .mode column
sqlite> .headers on
sqlite> SELECT * FROM users;
-- 列表模式(默认)
sqlite> .mode list
sqlite> SELECT * FROM users;
-- CSV模式
sqlite> .mode csv
sqlite> SELECT * FROM users;
-- HTML模式
sqlite> .mode html
sqlite> SELECT * FROM users;
-- 插入模式
sqlite> .mode insert
sqlite> SELECT * FROM users;
-- 行模式
sqlite> .mode line
sqlite> SELECT * FROM users;
-- 制表符模式
sqlite> .mode tabs
sqlite> SELECT * FROM users;
3.2 设置分隔符 #
bash
-- 设置分隔符
sqlite> .separator ","
sqlite> SELECT * FROM users;
-- CSV模式自动设置
sqlite> .mode csv
3.3 设置NULL显示 #
bash
-- 设置NULL显示值
sqlite> .nullvalue NULL
sqlite> SELECT * FROM users;
3.4 设置列宽 #
bash
-- 设置列宽
sqlite> .width 5 20 30
sqlite> SELECT id, name, email FROM users;
四、导入导出 #
4.1 导出数据 #
bash
-- 导出整个数据库
sqlite> .output backup.sql
sqlite> .dump
sqlite> .output stdout
-- 导出特定表
sqlite> .output users.sql
sqlite> .dump users
sqlite> .output stdout
-- 导出为CSV
sqlite> .mode csv
sqlite> .output users.csv
sqlite> SELECT * FROM users;
sqlite> .output stdout
4.2 导入数据 #
bash
-- 导入SQL文件
sqlite> .read backup.sql
-- 导入CSV文件
sqlite> .mode csv
sqlite> .import users.csv users
-- 导入带表头的CSV
sqlite> .mode csv
sqlite> .import --csv users.csv users
4.3 备份数据库 #
bash
-- 在线备份
sqlite> .backup backup.db
-- 备份主数据库
sqlite> .backup main backup.db
五、格式化和显示 #
5.1 显示设置 #
bash
-- 显示列名
sqlite> .headers on
-- 不显示列名
sqlite> .headers off
-- 显示执行时间
sqlite> .timer on
-- 显示执行计划
sqlite> .eqp on
-- 显示统计信息
sqlite> .stats on
5.2 提示符设置 #
bash
-- 设置提示符
sqlite> .prompt "sqlite3> " " ...> "
-- 显示当前设置
sqlite> .show
六、执行控制 #
6.1 执行SQL文件 #
bash
-- 执行SQL文件
sqlite> .read script.sql
-- 从命令行执行
sqlite3 myapp.db < script.sql
6.2 执行Shell命令 #
bash
-- 执行Shell命令
sqlite> .shell ls -la
-- 或使用!
sqlite> !ls -la
七、配置文件 #
7.1 .sqliterc文件 #
bash
-- 创建 ~/.sqliterc 配置文件
-- 内容示例:
.headers on
.mode column
.nullvalue NULL
.timer on
.prompt "sqlite> " " ...> "
-- 启动时自动加载配置
sqlite3 myapp.db
7.2 临时禁用配置 #
bash
-- 使用-norc选项禁用配置文件
sqlite3 -norc myapp.db
八、常用命令速查 #
8.1 数据库管理 #
| 命令 | 说明 |
|---|---|
| .open | 打开数据库 |
| .databases | 列出数据库 |
| .tables | 列出表 |
| .schema | 显示表结构 |
| .indexes | 列出索引 |
8.2 输出控制 #
| 命令 | 说明 |
|---|---|
| .mode | 设置输出模式 |
| .headers | 显示/隐藏列名 |
| .output | 设置输出目标 |
| .separator | 设置分隔符 |
| .width | 设置列宽 |
8.3 导入导出 #
| 命令 | 说明 |
|---|---|
| .dump | 导出SQL |
| .read | 执行SQL文件 |
| .import | 导入数据 |
| .backup | 备份数据库 |
8.4 其他命令 #
| 命令 | 说明 |
|---|---|
| .help | 显示帮助 |
| .quit | 退出 |
| .timer | 显示执行时间 |
| .eqp | 显示执行计划 |
| .shell | 执行Shell命令 |
九、实用技巧 #
9.1 快速查看表数据 #
bash
-- 快速查看表数据
sqlite> SELECT * FROM users LIMIT 10;
-- 使用.mode line更易读
sqlite> .mode line
sqlite> SELECT * FROM users WHERE id = 1;
9.2 格式化输出 #
bash
-- 格式化输出
sqlite> .mode column
sqlite> .headers on
sqlite> .width 5 20 30 10
sqlite> SELECT id, name, email, status FROM users;
9.3 导出特定查询结果 #
bash
-- 导出查询结果
sqlite> .output result.csv
sqlite> .mode csv
sqlite> .headers on
sqlite> SELECT * FROM users WHERE status = 1;
sqlite> .output stdout
9.4 批量执行SQL #
bash
-- 创建SQL文件
-- script.sql
BEGIN;
INSERT INTO users (name) VALUES ('User1');
INSERT INTO users (name) VALUES ('User2');
COMMIT;
-- 执行
sqlite3 myapp.db < script.sql
十、总结 #
常用命令 #
bash
-- 启动
sqlite3 myapp.db
-- 查看表
.tables
.schema users
-- 查询数据
.mode column
.headers on
SELECT * FROM users LIMIT 10;
-- 导出
.output backup.sql
.dump
.output stdout
-- 导入
.read backup.sql
-- 退出
.quit
最佳实践 #
- 使用.sqliterc配置常用设置
- 使用.mode column和.headers on提高可读性
- 使用.dump进行备份
- 使用.timer监控性能
- 使用.eqp分析查询计划
SQLite学习完成!
最后更新:2026-03-27