SQLite 使用教程 2_.md 14 KB

SQLite 命令行工具的详细使用说明

以下是对 sqlite3 命令行工具中的各个 .命令 的详细解释和示例:

1. .help

功能: 显示可用命令列表或指定模式的命令帮助。

用法:

.help

.help PATTERN

示例: 输入 .help 查看所有命令,或 .help backup 查看与备份相关的命令。

2. .archive ...

功能: 管理SQL存档。

用法: 未提供具体参数说明,可能用于备份和恢复。

示例: 更多细节请参考 SQLite 文档。

3. .auth ON|OFF

功能: 显示授权回调函数的调用情况。

用法:

.auth ON
.auth OFF

示例: 启用认证日志:

.auth ON

4. .backup ?DB? FILE

功能: 备份指定数据库到文件,默认备份 main 数据库。

用法:

.backup FILE
.backup DB FILE

示例: 将当前数据库备份为 backup.db:

.backup backup.db

将名为 other 的数据库备份为 other_backup.db:

.backup other other_backup.db

5. .bail on|off

功能: 设置遇到错误时退出。

用法:

.bail on
.bail off

示例: 启用 bail 模式:

.bail on

6. .cd DIRECTORY

功能: 更改工作目录。

用法:

.cd /path/to/directory

示例: 切换到 Documents 目录:

.cd Documents

7. .changes on|off

功能: 显示每条SQL语句影响的行数。

用法:

.changes on
.changes off

示例: 启用 changes 模式:

.changes on
DELETE FROM table;
-- 输出:1 row affected

8. .check GLOB

功能: 在测试后检查输出是否匹配给定的GLOB模式。

用法:

.check *.sql

示例: 备份后检查结果:

.dump > backup.sql
.check backup.sql

9. .clone NEWDB

功能: 克隆数据到新数据库。

用法:

.clone newdb

示例: 克隆 main 数据库到 clone.db:

.clone clone.db

10. .connection [close] [#]

功能: 管理辅助连接。

用法:

.connection 1
.connection close 2

示例: 列出所有连接:

.connection

关闭编号为3的连接:

.connection close 3

11. .databases

功能: 列出附加数据库及其文件。

用法:

.databases

示例:

sqlite> .databases;
main: /path/to/db.sqlite (current)
temp: (autoclose) 

12. .dbconfig ?op? ?val?

功能: 列出或更改数据库配置选项。

用法:

.dbconfig
.dbconfig 3078
.dbconfig 3078 1

示例: 显示所有配置:

.dbconfig

设置配置值:

.dbconfig 3078 1

13. .dbinfo ?DB?

功能: 显示数据库状态信息。

用法:

.dbinfo
.dbinfo temp

示例: 查看 main 数据库的状态:

.dbinfo

查看临时数据库的状态:

.dbinfo temp

14. .dump ?OBJECTS?

功能: 将数据库内容导出为SQL语句。

用法:

.dump
.dump table_name
.dump schema.sqlite

示例: 导出整个数据库到 dump.sql:

.dump > dump.sql

仅导出 users 表的结构和数据:

.dump users

15. .echo on|off

功能: 控制命令回显。

用法:

.echo on
.echo off

示例: 禁用回显以减少输出:

.echo off
SELECT * FROM table;

16. .eqp on|off|full

功能: 控制EXPLAIN QUERY PLAN的显示。

用法:

.eqp on
.eqp full
.eqp off

示例: 显示查询计划:

.eqp on
SELECT * FROM table LIMIT 10;

17. .excel

功能: 将结果输出到电子表格。

用法:

.excel

示例: 执行查询后,结果会自动打开在Excel中:

SELECT * FROM sales;
.excel

18. .exit ?CODE?

功能: 退出程序或主实例。

用法:

.exit
.exit 0

示例: 正常退出并返回代码 0:

.exit 0

19. .expert

功能: 建议索引以优化查询。

用法:

.expert

示例: 执行一个查询后,获取索引建议:

.expert
SELECT * FROM table WHERE id > 100;

20. .explain ?on|off|auto?

功能: 控制EXPLAIN输出模式。

用法:

.explain on
.explain auto
.explain off

示例: 使用自动模式显示执行计划:

.explain
SELECT * FROM table;

21. .filectrl CMD ...

功能: 执行文件控制命令。

用法: 参考 SQLite 文档中的 sqlite3_file_control 接口。

示例: 更多信息请参考官方文档。

22. .fullschema ?--indent?

功能: 显示架构和统计表内容,可带缩进。

用法:

.fullschema
.fullschema --indent 4

示例: 带缩进显示:

.fullschema --indent 4

23. .headers on|off

功能: 显示结果标题。

用法:

.headers on
.headers off

示例: 禁用标题输出:

.headers off
SELECT * FROM table;

24. .help ?-all? ?PATTERN?

功能: 显示帮助信息。

用法:

.help
.help -all
.help backup

示例: 查看所有命令:

.help -all

25. .import FILE TABLE

功能: 将文件内容导入表中。

用法:

.import data.csv table_name

示例: 导入 CSV 文件到 users 表:

.import users_data.csv users

26. .indexes ?TABLE?

功能: 显示指定表的索引。

用法:

.indexes
.indexes table_name

示例: 列出所有表的索引:

.indexes

列出 users 表的索引:

.indexes users

27. .limit ?LIMIT? ?VAL?

功能: 显示或设置SQLITE_LIMIT参数。

用法:

.limit
.limit 100
.limit 100 5000

示例: 查看当前限制:

.limit

设置最大嵌套级数为20:

.limit 100 20

28. .lint OPTIONS

功能: 分析模式问题。

用法:

.lint
.lint --help

示例: 查看 lint 命令的帮助:

.lint --help

29. .load FILE ?ENTRY?

功能: 加载扩展库文件。

用法:

.load extension.so

示例: 加载加密扩展:

.load sqlite-encrypt.so

30. .log FILE|on|off

功能: 控制日志输出。

用法:

.log stdout
.log off

示例: 启用日志到标准输出:

.log on

31. .mode MODE ?OPTIONS?

功能: 设置输出模式,如 csv、html 等。

用法:

.mode csv
.mode html

示例: 切换到 CSV 模式:

.mode csv
SELECT * FROM table;

32. .nonce STRING

功能: 使用一次性密码绕过安全措施。

用法:

.nonce your_nonce_string

示例: 禁用安全措施一次:

.nonce abcdef
DELETE FROM table;

33. .nullvalue STRING

功能: 指定显示NULL值的字符串。

用法:

.nullvalue NULL
.nullvalue ''

示例: 显示NULL为 empty string:

.nullvalue ''
SELECT id, name FROM table;

34. .once ?OPTIONS? ?FILE?

功能: 将下一个查询结果输出到指定文件。

用法:

.once output.txt
.once --append output.txt

示例: 导出数据到文件:

.once backup.csv
SELECT * FROM sales;

35. .open ?OPTIONS? ?FILE?

功能: 关闭现有数据库并打开新文件。

用法:

.open new.db
.open --readwrite existing.db

示例: 打开新数据库:

.open data.db

36. .output ?FILE?

功能: 设置输出目标,重定向到文件或标准输出。

用法:

.output
.output output.log

示例: 输出结果到日志文件:

.output log.txt
SELECT * FROM table;

37. .parameter CMD ...

功能: 管理SQL参数绑定。

用法:

.parameter add PNAME VALUE
.parameter show

示例: 设置参数:

.parameter add :name 'Alice'
SELECT :name;

38. .print STRING...

功能: 打印固定字符串或变量。

用法:

.print Hello, World!
.print %s %d Alice 30

示例: 输出带格式的字符串:

.print %.2f 100.5

39. .progress N

功能: 设置每N步调用进度处理函数。

用法:

.progress 1000

示例: 每1000步显示进度:

.progress 1000
INSERT INTO table VALUES (...);

40. .prompt MAIN CONTINUE

功能: 替换默认提示符。

用法:

.prompt '$sqlite> ' '$continue>'

示例: 更改主提示和继续提示:

.prompt mainPrompt continuePrompt

41. .quit

功能: 退出解释器,若为主实例则完全退出。

用法:

.quit

示例: 正常退出:

.quit

42. .read FILE

功能: 从文件读取输入或命令输出。

用法:

.read input.sql
.read < command_output

示例: 执行文件中的SQL语句:

.read init_schema.sql

43. .recover

功能: 恢复损坏的数据库。

用法:

.recover corrupt.db

示例: 尝试恢复损坏的数据库:

sqlite> .open corrupt.db
sqlite> .recover

44. .restore ?DB? FILE

功能: 恢复数据库内容。

用法:

.restore backup.sql
.restore main backup.sql

示例: 恢复 main 数据库:

.restore main backup.sql

45. .save ?OPTIONS? FILE

功能: 将数据库写入文件,作为备份。

用法:

.save backup.db
.save --cipher aes256 backup_encrypted.db

示例: 导出加密数据库:

.save --cipher aes256 encrypted.db

46. .scanstats on|off|est

功能: 控制sqlite3_stmt_scanstatus指标。

用法:

.scanstats on
.scanstats off
.scanstats est

示例: 启用扫描统计:

.scanstats on
SELECT * FROM table;

47. .schema ?PATTERN?

功能: 显示创建表的语句,可带模式过滤。

用法:

.schema
.schema users

示例: 显示所有表的结构:

.schema

显示匹配 'user' 的表结构:

.schema user%

48. .separator COL ?ROW?

功能: 改变列和行分隔符。

用法:

.separator ,
.separator \n
.separator , "\n"

示例: 设置逗号分隔值,换行分隔行:

.separator , "\n"
SELECT * FROM table;

49. .session ?NAME? CMD ...

功能: 创建或控制会话。

用法:

.session new_session
.session list
.session close old_session

示例: 列出会话:

.session list

关闭一个会话:

.session close session1

50. .sha3sum ...

功能: 计算数据库内容的SHA3哈希。

用法:

.sha3sum
.sha3sum sha3_256

示例: 显示所有数据的 SHA3 哈希:

.sha3sum

51. .shell CMD ARGS...

功能: 在系统壳中执行命令。

用法:

.shell ls -l
.shell mkdir backup

示例: 执行外部命令:

.shell ping google.com

52. .show

功能: 显示当前的各种设置值。

用法:

.show

示例: 显示所有配置:

.show

53. .stats ?ARG?

功能: 显示统计信息或开启/关闭统计功能。

用法:

.stats
.stats on
.stats off

示例: 开启统计模式:

.stats on
SELECT * FROM table;

54. .system CMD ARGS...

功能: 在系统壳中执行命令。

用法:

.system ls -a

示例: 执行外部命令:

.system echo Hello, World!

55. .tables ?TABLE?

功能: 列出所有表名,可带模式过滤。

用法:

.tables
.tables 'my_table%'

示例: 显示所有表:

.tables

显示以 'user' 开头的表:

.tables user*

56. .timeout MS

功能: 设置等待锁定的时间。

用法:

.timeout 1000

示例: 等待最多1秒获取锁:

.timeout 1000
UPDATE table SET value = 'test';

57. .timer on|off

功能: 控制SQL执行时间的显示。

用法:

.timer on
.timer off

示例: 启用计时器:

.timer on
SELECT * FROM large_table;

58. .trace ?OPTIONS?

功能: 输出正在运行的SQL语句。

用法:

.trace on
.trace off
.trace output.sql

示例: 跟踪查询输出:

.trace trace_output.log
SELECT * FROM table;

59. .version

功能: 显示版本信息,包括源代码、库和编译器版本。

用法:

.version

示例: 显示 SQLite 版本:

.version

60. .vfsinfo ?AUX?

功能: 显示VFS层的信息。

用法:

.vfsinfo
.vfsinfo aux_name

示例: 显示所有VFS信息:

.vfsinfo

61. .vfslist

功能: 列出所有可用的VFS模块。

用法:

.vfslist

示例: 列出当前支持的VFS:

.vfslist

62. .vfsname ?AUX?

功能: 显示当前使用的VFS名称,可指定辅助VFS。

用法:

.vfsname
.vfsname aux_name

示例: 显示主VFS:

.vfsname

63. .width NUM1 NUM2 ...

功能: 设置列的最小宽度,以美观显示结果。

用法:

.width 10 20 30

示例: 设置三列的宽度为10、20、30:

.width 10 20 30
SELECT id, name, email FROM users;

这些命令提供了强大的数据库管理和操作功能。通过结合使用这些命令,可以进行备份、恢复、性能优化、数据分析等多种任务。建议在实际应用中多加练习,并参考 SQLite 官方文档以获得更详细的信息和高级用法。