### SQLite 命令行工具的详细使用说明 以下是对 `sqlite3` 命令行工具中的各个 `.命令` 的详细解释和示例: #### 1. **`.help`** **功能**: 显示可用命令列表或指定模式的命令帮助。 **用法**: ```bash .help ``` 或 ```bash .help PATTERN ``` **示例**: 输入 `.help` 查看所有命令,或 `.help backup` 查看与备份相关的命令。 #### 2. **`.archive ...`** **功能**: 管理SQL存档。 **用法**: 未提供具体参数说明,可能用于备份和恢复。 **示例**: 更多细节请参考 SQLite 文档。 #### 3. **`.auth ON|OFF`** **功能**: 显示授权回调函数的调用情况。 **用法**: ```bash .auth ON .auth OFF ``` **示例**: 启用认证日志: ```bash .auth ON ``` #### 4. **`.backup ?DB? FILE`** **功能**: 备份指定数据库到文件,默认备份 `main` 数据库。 **用法**: ```bash .backup FILE .backup DB FILE ``` **示例**: 将当前数据库备份为 backup.db: ```bash .backup backup.db ``` 将名为 other 的数据库备份为 other_backup.db: ```bash .backup other other_backup.db ``` #### 5. **`.bail on|off`** **功能**: 设置遇到错误时退出。 **用法**: ```bash .bail on .bail off ``` **示例**: 启用 bail 模式: ```bash .bail on ``` #### 6. **`.cd DIRECTORY`** **功能**: 更改工作目录。 **用法**: ```bash .cd /path/to/directory ``` **示例**: 切换到 Documents 目录: ```bash .cd Documents ``` #### 7. **`.changes on|off`** **功能**: 显示每条SQL语句影响的行数。 **用法**: ```bash .changes on .changes off ``` **示例**: 启用 changes 模式: ```bash .changes on DELETE FROM table; -- 输出:1 row affected ``` #### 8. **`.check GLOB`** **功能**: 在测试后检查输出是否匹配给定的GLOB模式。 **用法**: ```bash .check *.sql ``` **示例**: 备份后检查结果: ```bash .dump > backup.sql .check backup.sql ``` #### 9. **`.clone NEWDB`** **功能**: 克隆数据到新数据库。 **用法**: ```bash .clone newdb ``` **示例**: 克隆 main 数据库到 clone.db: ```bash .clone clone.db ``` #### 10. **`.connection [close] [#]`** **功能**: 管理辅助连接。 **用法**: ```bash .connection 1 .connection close 2 ``` **示例**: 列出所有连接: ```bash .connection ``` 关闭编号为3的连接: ```bash .connection close 3 ``` #### 11. **`.databases`** **功能**: 列出附加数据库及其文件。 **用法**: ```bash .databases ``` **示例**: ```bash sqlite> .databases; main: /path/to/db.sqlite (current) temp: (autoclose) ``` #### 12. **`.dbconfig ?op? ?val?`** **功能**: 列出或更改数据库配置选项。 **用法**: ```bash .dbconfig .dbconfig 3078 .dbconfig 3078 1 ``` **示例**: 显示所有配置: ```bash .dbconfig ``` 设置配置值: ```bash .dbconfig 3078 1 ``` #### 13. **`.dbinfo ?DB?`** **功能**: 显示数据库状态信息。 **用法**: ```bash .dbinfo .dbinfo temp ``` **示例**: 查看 main 数据库的状态: ```bash .dbinfo ``` 查看临时数据库的状态: ```bash .dbinfo temp ``` #### 14. **`.dump ?OBJECTS?`** **功能**: 将数据库内容导出为SQL语句。 **用法**: ```bash .dump .dump table_name .dump schema.sqlite ``` **示例**: 导出整个数据库到 dump.sql: ```bash .dump > dump.sql ``` 仅导出 users 表的结构和数据: ```bash .dump users ``` #### 15. **`.echo on|off`** **功能**: 控制命令回显。 **用法**: ```bash .echo on .echo off ``` **示例**: 禁用回显以减少输出: ```bash .echo off SELECT * FROM table; ``` #### 16. **`.eqp on|off|full`** **功能**: 控制EXPLAIN QUERY PLAN的显示。 **用法**: ```bash .eqp on .eqp full .eqp off ``` **示例**: 显示查询计划: ```bash .eqp on SELECT * FROM table LIMIT 10; ``` #### 17. **`.excel`** **功能**: 将结果输出到电子表格。 **用法**: ```bash .excel ``` **示例**: 执行查询后,结果会自动打开在Excel中: ```bash SELECT * FROM sales; .excel ``` #### 18. **`.exit ?CODE?`** **功能**: 退出程序或主实例。 **用法**: ```bash .exit .exit 0 ``` **示例**: 正常退出并返回代码 0: ```bash .exit 0 ``` #### 19. **`.expert`** **功能**: 建议索引以优化查询。 **用法**: ```bash .expert ``` **示例**: 执行一个查询后,获取索引建议: ```bash .expert SELECT * FROM table WHERE id > 100; ``` #### 20. **`.explain ?on|off|auto?`** **功能**: 控制EXPLAIN输出模式。 **用法**: ```bash .explain on .explain auto .explain off ``` **示例**: 使用自动模式显示执行计划: ```bash .explain SELECT * FROM table; ``` #### 21. **`.filectrl CMD ...`** **功能**: 执行文件控制命令。 **用法**: 参考 SQLite 文档中的 `sqlite3_file_control` 接口。 **示例**: 更多信息请参考官方文档。 #### 22. **`.fullschema ?--indent?`** **功能**: 显示架构和统计表内容,可带缩进。 **用法**: ```bash .fullschema .fullschema --indent 4 ``` **示例**: 带缩进显示: ```bash .fullschema --indent 4 ``` #### 23. **`.headers on|off`** **功能**: 显示结果标题。 **用法**: ```bash .headers on .headers off ``` **示例**: 禁用标题输出: ```bash .headers off SELECT * FROM table; ``` #### 24. **`.help ?-all? ?PATTERN?`** **功能**: 显示帮助信息。 **用法**: ```bash .help .help -all .help backup ``` **示例**: 查看所有命令: ```bash .help -all ``` #### 25. **`.import FILE TABLE`** **功能**: 将文件内容导入表中。 **用法**: ```bash .import data.csv table_name ``` **示例**: 导入 CSV 文件到 users 表: ```bash .import users_data.csv users ``` #### 26. **`.indexes ?TABLE?`** **功能**: 显示指定表的索引。 **用法**: ```bash .indexes .indexes table_name ``` **示例**: 列出所有表的索引: ```bash .indexes ``` 列出 users 表的索引: ```bash .indexes users ``` #### 27. **`.limit ?LIMIT? ?VAL?`** **功能**: 显示或设置SQLITE_LIMIT参数。 **用法**: ```bash .limit .limit 100 .limit 100 5000 ``` **示例**: 查看当前限制: ```bash .limit ``` 设置最大嵌套级数为20: ```bash .limit 100 20 ``` #### 28. **`.lint OPTIONS`** **功能**: 分析模式问题。 **用法**: ```bash .lint .lint --help ``` **示例**: 查看 lint 命令的帮助: ```bash .lint --help ``` #### 29. **`.load FILE ?ENTRY?`** **功能**: 加载扩展库文件。 **用法**: ```bash .load extension.so ``` **示例**: 加载加密扩展: ```bash .load sqlite-encrypt.so ``` #### 30. **`.log FILE|on|off`** **功能**: 控制日志输出。 **用法**: ```bash .log stdout .log off ``` **示例**: 启用日志到标准输出: ```bash .log on ``` #### 31. **`.mode MODE ?OPTIONS?`** **功能**: 设置输出模式,如 csv、html 等。 **用法**: ```bash .mode csv .mode html ``` **示例**: 切换到 CSV 模式: ```bash .mode csv SELECT * FROM table; ``` #### 32. **`.nonce STRING`** **功能**: 使用一次性密码绕过安全措施。 **用法**: ```bash .nonce your_nonce_string ``` **示例**: 禁用安全措施一次: ```bash .nonce abcdef DELETE FROM table; ``` #### 33. **`.nullvalue STRING`** **功能**: 指定显示NULL值的字符串。 **用法**: ```bash .nullvalue NULL .nullvalue '' ``` **示例**: 显示NULL为 empty string: ```bash .nullvalue '' SELECT id, name FROM table; ``` #### 34. **`.once ?OPTIONS? ?FILE?`** **功能**: 将下一个查询结果输出到指定文件。 **用法**: ```bash .once output.txt .once --append output.txt ``` **示例**: 导出数据到文件: ```bash .once backup.csv SELECT * FROM sales; ``` #### 35. **`.open ?OPTIONS? ?FILE?`** **功能**: 关闭现有数据库并打开新文件。 **用法**: ```bash .open new.db .open --readwrite existing.db ``` **示例**: 打开新数据库: ```bash .open data.db ``` #### 36. **`.output ?FILE?`** **功能**: 设置输出目标,重定向到文件或标准输出。 **用法**: ```bash .output .output output.log ``` **示例**: 输出结果到日志文件: ```bash .output log.txt SELECT * FROM table; ``` #### 37. **`.parameter CMD ...`** **功能**: 管理SQL参数绑定。 **用法**: ```bash .parameter add PNAME VALUE .parameter show ``` **示例**: 设置参数: ```bash .parameter add :name 'Alice' SELECT :name; ``` #### 38. **`.print STRING...`** **功能**: 打印固定字符串或变量。 **用法**: ```bash .print Hello, World! .print %s %d Alice 30 ``` **示例**: 输出带格式的字符串: ```bash .print %.2f 100.5 ``` #### 39. **`.progress N`** **功能**: 设置每N步调用进度处理函数。 **用法**: ```bash .progress 1000 ``` **示例**: 每1000步显示进度: ```bash .progress 1000 INSERT INTO table VALUES (...); ``` #### 40. **`.prompt MAIN CONTINUE`** **功能**: 替换默认提示符。 **用法**: ```bash .prompt '$sqlite> ' '$continue>' ``` **示例**: 更改主提示和继续提示: ```bash .prompt mainPrompt continuePrompt ``` #### 41. **`.quit`** **功能**: 退出解释器,若为主实例则完全退出。 **用法**: ```bash .quit ``` **示例**: 正常退出: ```bash .quit ``` #### 42. **`.read FILE`** **功能**: 从文件读取输入或命令输出。 **用法**: ```bash .read input.sql .read < command_output ``` **示例**: 执行文件中的SQL语句: ```bash .read init_schema.sql ``` #### 43. **`.recover`** **功能**: 恢复损坏的数据库。 **用法**: ```bash .recover corrupt.db ``` **示例**: 尝试恢复损坏的数据库: ```bash sqlite> .open corrupt.db sqlite> .recover ``` #### 44. **`.restore ?DB? FILE`** **功能**: 恢复数据库内容。 **用法**: ```bash .restore backup.sql .restore main backup.sql ``` **示例**: 恢复 main 数据库: ```bash .restore main backup.sql ``` #### 45. **`.save ?OPTIONS? FILE`** **功能**: 将数据库写入文件,作为备份。 **用法**: ```bash .save backup.db .save --cipher aes256 backup_encrypted.db ``` **示例**: 导出加密数据库: ```bash .save --cipher aes256 encrypted.db ``` #### 46. **`.scanstats on|off|est`** **功能**: 控制sqlite3_stmt_scanstatus指标。 **用法**: ```bash .scanstats on .scanstats off .scanstats est ``` **示例**: 启用扫描统计: ```bash .scanstats on SELECT * FROM table; ``` #### 47. **`.schema ?PATTERN?`** **功能**: 显示创建表的语句,可带模式过滤。 **用法**: ```bash .schema .schema users ``` **示例**: 显示所有表的结构: ```bash .schema ``` 显示匹配 'user' 的表结构: ```bash .schema user% ``` #### 48. **`.separator COL ?ROW?`** **功能**: 改变列和行分隔符。 **用法**: ```bash .separator , .separator \n .separator , "\n" ``` **示例**: 设置逗号分隔值,换行分隔行: ```bash .separator , "\n" SELECT * FROM table; ``` #### 49. **`.session ?NAME? CMD ...`** **功能**: 创建或控制会话。 **用法**: ```bash .session new_session .session list .session close old_session ``` **示例**: 列出会话: ```bash .session list ``` 关闭一个会话: ```bash .session close session1 ``` #### 50. **`.sha3sum ...`** **功能**: 计算数据库内容的SHA3哈希。 **用法**: ```bash .sha3sum .sha3sum sha3_256 ``` **示例**: 显示所有数据的 SHA3 哈希: ```bash .sha3sum ``` #### 51. **`.shell CMD ARGS...`** **功能**: 在系统壳中执行命令。 **用法**: ```bash .shell ls -l .shell mkdir backup ``` **示例**: 执行外部命令: ```bash .shell ping google.com ``` #### 52. **`.show`** **功能**: 显示当前的各种设置值。 **用法**: ```bash .show ``` **示例**: 显示所有配置: ```bash .show ``` #### 53. **`.stats ?ARG?`** **功能**: 显示统计信息或开启/关闭统计功能。 **用法**: ```bash .stats .stats on .stats off ``` **示例**: 开启统计模式: ```bash .stats on SELECT * FROM table; ``` #### 54. **`.system CMD ARGS...`** **功能**: 在系统壳中执行命令。 **用法**: ```bash .system ls -a ``` **示例**: 执行外部命令: ```bash .system echo Hello, World! ``` #### 55. **`.tables ?TABLE?`** **功能**: 列出所有表名,可带模式过滤。 **用法**: ```bash .tables .tables 'my_table%' ``` **示例**: 显示所有表: ```bash .tables ``` 显示以 'user' 开头的表: ```bash .tables user* ``` #### 56. **`.timeout MS`** **功能**: 设置等待锁定的时间。 **用法**: ```bash .timeout 1000 ``` **示例**: 等待最多1秒获取锁: ```bash .timeout 1000 UPDATE table SET value = 'test'; ``` #### 57. **`.timer on|off`** **功能**: 控制SQL执行时间的显示。 **用法**: ```bash .timer on .timer off ``` **示例**: 启用计时器: ```bash .timer on SELECT * FROM large_table; ``` #### 58. **`.trace ?OPTIONS?`** **功能**: 输出正在运行的SQL语句。 **用法**: ```bash .trace on .trace off .trace output.sql ``` **示例**: 跟踪查询输出: ```bash .trace trace_output.log SELECT * FROM table; ``` #### 59. **`.version`** **功能**: 显示版本信息,包括源代码、库和编译器版本。 **用法**: ```bash .version ``` **示例**: 显示 SQLite 版本: ```bash .version ``` #### 60. **`.vfsinfo ?AUX?`** **功能**: 显示VFS层的信息。 **用法**: ```bash .vfsinfo .vfsinfo aux_name ``` **示例**: 显示所有VFS信息: ```bash .vfsinfo ``` #### 61. **`.vfslist`** **功能**: 列出所有可用的VFS模块。 **用法**: ```bash .vfslist ``` **示例**: 列出当前支持的VFS: ```bash .vfslist ``` #### 62. **`.vfsname ?AUX?`** **功能**: 显示当前使用的VFS名称,可指定辅助VFS。 **用法**: ```bash .vfsname .vfsname aux_name ``` **示例**: 显示主VFS: ```bash .vfsname ``` #### 63. **`.width NUM1 NUM2 ...`** **功能**: 设置列的最小宽度,以美观显示结果。 **用法**: ```bash .width 10 20 30 ``` **示例**: 设置三列的宽度为10、20、30: ```bash .width 10 20 30 SELECT id, name, email FROM users; ``` --- 这些命令提供了强大的数据库管理和操作功能。通过结合使用这些命令,可以进行备份、恢复、性能优化、数据分析等多种任务。建议在实际应用中多加练习,并参考 SQLite 官方文档以获得更详细的信息和高级用法。