当前位置: 首页 > ai >正文

sqlite3 命令行工具详细介绍

在这里插入图片描述

一、启动与退出

  1. 启动数据库连接

    sqlite3 [database_file]  # 打开/创建数据库文件(如 test.db)
    sqlite3                  # 启动临时内存数据库 (:memory:)
    sqlite3 :memory:         # 显式启动内存数据库
    
    • 文件不存在时自动创建
    • 不指定文件名则使用临时内存数据库(关闭后消失)
  2. 退出 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(包括隐藏信息)

四、数据操作与导入导出

  1. CSV 导入导出

    -- 设置 CSV 模式
    .mode csv
    .headers on   -- 导出时包含列名-- 导入 CSV
    .import users.csv users  -- 文件 → 表-- 导出 CSV
    .output users_export.csv
    SELECT * FROM users;
    .output stdout           -- 恢复输出到终端
    
  2. 其他格式

    .mode list       -- 自定义分隔符 (默认 '|')
    .mode insert     -- 生成 INSERT 语句
    .mode json       -- JSON 格式输出
    .separator ","   -- 设置分隔符(如 CSV)
    .nullvalue NULL  -- 指定 NULL 的显示值
    

五、查询输出格式化

命令效果示例输出
.mode list竖线分隔1|Alice|30
.mode csvCSV 格式"1","Alice","30"
.mode column表格对齐1 Alice 30
.mode box表格+边框┌──┬───────┬──┐
│1 │ Alice │30│
.mode jsonJSON 数组[{"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. 附加多个数据库

    ATTACH DATABASE 'aux.db' AS aux;
    SELECT * FROM main.users JOIN aux.orders ...;
    .databases  -- 查看附加数据库
    
  2. 执行 PRAGMA 配置

    PRAGMA journal_mode=WAL;    -- 启用 WAL 模式
    PRAGMA synchronous=NORMAL;  -- 平衡性能与安全
    PRAGMA foreign_keys=ON;     -- 启用外键约束
    
  3. 事务控制

    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"

九、注意事项

  1. 命令分类

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

    INSERT INTO logs (message) VALUES ('It''s a test');
    
  3. 资源限制
    查看限制:PRAGMA compile_options;
    常见限制:SQLITE_MAX_LENGTH=1,000,000,000 (字符串/Blob最大长度)


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

http://www.xdnf.cn/news/10704.html

相关文章:

  • 虚拟现实教育终端技术方案——基于EFISH-SCB-RK3588的全场景国产化替代
  • DNS (Domain Name System) 域名系统 将域名解析为 IP 地址
  • OCC笔记:TopoDS_Edge上是否一定存在Geom_Curve
  • 【Vmware】虚拟机安装、镜像安装、Nat网络模式、本地VM8、ssh链接保姆篇(图文教程)
  • J. Adv. Res. | DAP-seq助力解析大麦HvbZIP87基因让小麦抗病又高产的新机制
  • 吃透 Golang 基础:数据结构之 Map
  • UGUI Text/TextMeshPro字体组件
  • 从一堆数字里长出一棵树:中序 + 后序构建二叉树的递归密码
  • chromedriver 下载失败
  • 阿里云百炼全解析:一站式大模型开发平台的架构与行业实践
  • 智启未来:AI重构制造业供应链的五大革命性突破
  • 鸿蒙仓颉语言开发实战教程:购物车页面
  • AI Agent开发第78课-大模型结合Flink构建政务类长公文、长文件、OA应用Agent
  • 网络安全-等级保护(等保) 3-3-1 GB/T 36627-2018 附录A (资料性附录) 测评后活动、附 录 B (资料性附录)渗透测试的有关概念说明
  • WPF技术体系与现代化样式
  • 如何选择最高效的沟通方式?
  • 每日八股文6.3
  • 谷歌地图苹果版v6.138.2 - 前端工具导航
  • 极智项目 | 基于PyQT+Whisper实现的语音识别软件设计
  • HttpServletResponse 对象用来做什么?
  • T/CCSA 663-2025《医疗科研云平台技术要求》标准解读与深度分析
  • 黑马Java面试笔记之 微服务篇(业务)
  • 6.3 day 35
  • 榕壹云健身预约系统:多门店管理的数字化解决方案(ThinkPHP+MySQL+UniApp实现)
  • 前端面试高频问题通关指南—通用性问题
  • 相机Camera日志分析之二十三:高通相机Camx 基于预览1帧的process_capture_request二级日志分析详解
  • rate-limit 为 java 设计的渐进式限流开源工具
  • java Semaphore‌
  • 线程安全与线程池
  • Artificial Analysis2025年Q1人工智能发展六大趋势总结