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

最佳实践 #

  1. 使用.sqliterc配置常用设置
  2. 使用.mode column和.headers on提高可读性
  3. 使用.dump进行备份
  4. 使用.timer监控性能
  5. 使用.eqp分析查询计划

SQLite学习完成!

最后更新:2026-03-27