返回顶部
分享到

sqlite3命令行工具使用介绍

数据库其他 来源:互联网 作者:佚名 发布时间:2025-06-25 22:35:43 人浏览
摘要

一、启动与退出 启动数据库连接 1 2 3 sqlite3 [database_file] # 打开/创建数据库文件(如 test.db) sqlite3 # 启动临时内存数据库 (:memory:) sqlite3 :memory: # 显式启动内存数据库 文件不存在时自动创建 不

一、启动与退出

  1. 启动数据库连接

    1

    2

    3

    sqlite3 [database_file]  # 打开/创建数据库文件(如 test.db)

    sqlite3                  # 启动临时内存数据库 (:memory:)

    sqlite3 :memory:         # 显式启动内存数据库

    • 文件不存在时自动创建
    • 不指定文件名则使用临时内存数据库(关闭后消失)
  2. 退出 CLI

    1

    2

    3

    4

    .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(包括隐藏信息)

四、数据操作与导入导出

  1. CSV 导入导出

    1

    2

    3

    4

    5

    6

    7

    8

    9

    -- 设置 CSV 模式

    .mode csv

    .headers on   -- 导出时包含列名

    -- 导入 CSV

    .import users.csv users  -- 文件 → 表

    -- 导出 CSV

    .output users_export.csv

    SELECT * FROM users;

    .output stdout           -- 恢复输出到终端

  2. 其他格式

    1

    2

    3

    4

    5

    .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 自定义提示符

七、高级操作

  1. 附加多个数据库

    1

    2

    3

    ATTACH DATABASE 'aux.db' AS aux;

    SELECT * FROM main.users JOIN aux.orders ...;

    .databases  -- 查看附加数据库

  2. 执行 PRAGMA 配置

    1

    2

    3

    PRAGMA journal_mode=WAL;    -- 启用 WAL 模式

    PRAGMA synchronous=NORMAL;  -- 平衡性能与安全

    PRAGMA foreign_keys=ON;     -- 启用外键约束

  3. 事务控制

    1

    2

    3

    4

    BEGIN TRANSACTION;

    UPDATE accounts SET balance = balance - 100 WHERE id=1;

    UPDATE accounts SET balance = balance + 100 WHERE id=2;

    COMMIT;  -- 或 ROLLBACK

八、快捷示例场景

场景 1:从 CSV 创建新表并导入

1

sqlite3 finance.db  # 创建数据库

1

2

3

4

5

6

7

8

9

10

11

12

-- 创建表

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:备份与恢复

1

2

3

4

# 完整备份

sqlite3 production.db ".backup main backup_20231001.db"

# 恢复数据库

sqlite3 restored.db ".restore main backup_20231001.db"

九、注意事项

  1. 命令分类

    • 点命令 (.):以 . 开头(如 .tables),不需分号结尾
    • SQL 语句:标准 SQL(SELECT, CREATE 等),必须用分号 ; 结尾
  2. 特殊字符转义
    在字符串中使用单引号时需转义:

    1

    INSERT INTO logs (message) VALUES ('It''s a test');

  3. 资源限制
    查看限制:PRAGMA compile_options;
    常见限制:SQLITE_MAX_LENGTH=1,000,000,000 (字符串/Blob最大长度)

掌握这些命令后,您可通过 sqlite3 CLI 高效完成日常数据库管理任务!


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。

您可能感兴趣的文章 :

原文链接 :
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计