一、启动与退出
启动数据库连接
sqlite3 [database_file] # 打开/创建数据库文件(如 test.db) sqlite3 # 启动临时内存数据库 (:memory:) sqlite3 :memory: # 显式启动内存数据库
- 文件不存在时自动创建
- 不指定文件名则使用临时内存数据库(关闭后消失)
退出 cli
.exit .quit ctrl + d (linux/macos) ctrl + c (windows)
二、数据库与文件操作
命令 | 说明 | 示例 |
---|---|---|
.open [filename] | 打开/切换数据库 | .open backup.db |
.backup ?db? file | 在线备份数据库 | .backup main backup_2023.db |
.restore ?db? file | 从文件恢复数据库 | .restore main backup_2023.db |
.dump ?table? | 导出数据库为 sql 脚本 | .dump > full.sql .dump users > users.sql |
.read filename | 执行 sql 脚本文件 | .read import_data.sql |
.save file | 保存内存数据库到文件 | .save mem_backup.db |
三、元数据查询
命令 | 说明 |
---|---|
.databases | 显示所有附加数据库 |
.tables ?pattern? | 列出表(支持通配符) |
.schema ?table? | 显示表结构(create语句) |
.indexes ?table? | 列出索引 |
.fullschema | 显示完整 schema(包括隐藏信息) |
四、数据操作与导入导出
csv 导入导出
-- 设置 csv 模式 .mode csv .headers on -- 导出时包含列名 -- 导入 csv .import users.csv users -- 文件 → 表 -- 导出 csv .output users_export.csv select * from users; .output stdout -- 恢复输出到终端
其他格式
.mode list -- 自定义分隔符 (默认 '|') .mode insert -- 生成 insert 语句 .mode json -- json 格式输出 .separator "," -- 设置分隔符(如 csv) .nullvalue null -- 指定 null 的显示值
五、查询输出格式化
命令 | 效果 | 示例输出 |
---|---|---|
.mode list | 竖线分隔 | 1|alice|30 |
.mode csv | csv 格式 | "1","alice","30" |
.mode column | 表格对齐 | 1 alice 30 |
.mode box | 表格+边框 | ┌──┬───────┬──┐ │1 │ alice │30│ |
.mode json | json 数组 | [{"id":1,"name":"alice","age":30}] |
.headers on/off | 显示/隐藏列名 | |
.width num1 num2 | 设置列宽 | .width 5 10 4 |
.timer on/off | 显示查询耗时 | run time: real 0.002 user 0.000000 sys 0.000000 |
六、实用功能
命令 | 说明 |
---|---|
.show | 显示当前所有设置 |
.stats on/off | 开关性能统计 |
.timefmt format | 设置日期格式 |
.shell cmd | 执行系统命令 |
.system cmd | 同上(别名) |
.prompt main continue | 自定义提示符 |
七、高级操作
附加多个数据库
attach database 'aux.db' as aux; select * from main.users join aux.orders ...; .databases -- 查看附加数据库
执行 pragma 配置
pragma journal_mode=wal; -- 启用 wal 模式 pragma synchronous=normal; -- 平衡性能与安全 pragma foreign_keys=on; -- 启用外键约束
事务控制
begin transaction; update accounts set balance = balance - 100 where id=1; update accounts set balance = balance + 100 where id=2; commit; -- 或 rollback
八、快捷示例场景
场景 1:从 csv 创建新表并导入
sqlite3 finance.db # 创建数据库
-- 创建表 create table transactions ( id integer primary key, date text, amount real, description text ); -- 导入 csv .mode csv .import transactions.csv transactions -- 验证数据 select count(*) from transactions;
场景 2:备份与恢复
# 完整备份 sqlite3 production.db ".backup main backup_20231001.db" # 恢复数据库 sqlite3 restored.db ".restore main backup_20231001.db"
九、注意事项
命令分类
- 点命令 (.):以
.
开头(如.tables
),不需分号结尾 - sql 语句:标准 sql(
select
,create
等),必须用分号;
结尾
- 点命令 (.):以
特殊字符转义
在字符串中使用单引号时需转义:insert into logs (message) values ('it''s a test');
资源限制
查看限制:pragma compile_options;
常见限制:sqlite_max_length=1,000,000,000
(字符串/blob最大长度)
掌握这些命令后,您可通过 sqlite3 cli 高效完成日常数据库管理任务!
到此这篇关于sqlite3 命令行工具使用指南的文章就介绍到这了,更多相关sqlite3 命令行工具内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论