sqlite3 命令行工具详细介绍

news2025/7/22 0:22:28

在这里插入图片描述

一、启动与退出

  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.coloradmin.cn/o/2398618.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ubuntu 22.04 编译安装nignx 报错 openssl 问题

前言 Ubuntu 20.04 中安装 Nginx (通过传包编译的方式)、开启关闭防火墙、开放端口号 在ubuntu 22.04.3 服务器上照着上面的文章 通过传包编译的方式安装nginx-1.18.0 的时候报错,报错内容如下: src/event/ngx_event_openssl.c: In function ‘ngx_ssl…

线程相关面试题

提示:线程相关面试题,持续更新中 文章目录 一、Java线程池1、Java线程池有哪些核心参数,分别有什么的作用?2、线程池有哪些拒绝策略?3、说一说线程池的执行流程?4、线程池核心线程数怎么设置呢?4、Java线程…

pikachu通关教程-目录遍历漏洞(../../)

目录遍历漏洞也可以叫做信息泄露漏洞、非授权文件包含漏洞等. 原理:目录遍历漏洞的原理比较简单,就是程序在实现上没有充分过滤用户输入的../之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。 这里的目录跳转符可以是../…

Maven-生命周期

目录 1.项目对象模型 2.依赖管理模型 3.仓库:用于存储资源,管理各种jar包 4.本地仓库路径 1.项目对象模型 2.依赖管理模型 3.仓库:用于存储资源,管理各种jar包 4.本地仓库路径

Matlab实现LSTM-SVM回归预测,作者:机器学习之心

Matlab实现LSTM-SVM回归预测,作者:机器学习之心 目录 Matlab实现LSTM-SVM回归预测,作者:机器学习之心效果一览基本介绍程序设计参考资料 效果一览 基本介绍 代码主要功能 该代码实现了一个LSTM-SVM回归预测模型,核心流…

Spring Boot 自动配置原理:从入门到精通

Spring Boot 的自动配置是其核心特性之一,它极大地简化了 Spring 应用的开发,让开发者可以专注于业务逻辑,而无需编写大量的配置代码。 本文将深入探讨 Spring Boot 自动配置的原理,帮助你理解其工作机制,并能灵活运用…

腾讯 ovCompose 开源,Kuikly 鸿蒙和 Compose DSL 开源,腾讯的“双”鸿蒙方案发布

近日,腾讯的 ovCompose 和 Kuikly 都发布了全新开源更新,其中 Kuikly 在之前我们聊过,本次 Kuikly 主要是正式开源鸿蒙支持部分和 Compose DSL 的相关支持,而 ovCompose 是腾讯视频团队基于 Compose Multiplatform 生态推出的跨平…

PYTHON调用讯飞C/C++动态库实现离线语音合成并且实时播放

语音合成(Text-to-Speech, TTS)技术在现代应用中扮演着越来越重要的角色,从智能客服到有声读物,从导航系统到辅助工具,TTS技术无处不在。本文将详细介绍如何使用Python结合科大讯飞的离线SDK实现一个本地化的语音合成系统。 技术背景 离线语…

黑马Java面试笔记之 消息中间件篇(RabbitMQ)

一. 消息丢失问题 RabbitMQ如何保证消息不丢失? 使用场景有: 异步发送(验证码、短信、邮件... )MYSQL和Redis,ES之间的数据同步分布式事务削峰填谷...... 消息丢失原因会有三种情况,分别分析一下 1.1 生…

Redisson学习专栏(五):源码阅读及Redisson的Netty通信层设计

文章目录 前言一、分布式锁核心实现:RedissonLock源码深度解析1.1 加锁机制:原子性与重入性实现1.2 看门狗机制:锁自动续期设计1.3 解锁机制:安全释放与通知1.4 锁竞争处理:等待队列与公平性1.5 容错机制:异…

结合 AI 生成 mermaid、plantuml 等图表

AI 画图 AI 画图并不是真的让 AI 画一个图片,而是让 AI 根据你的需求,生成对应的需求文本,再根据 “文本画图” 来生成图片。 Mermaid mermaid 支持流程图、时序图、架构图等等多种图片绘制。当然最终生成的效果和样式会根据不同的“文本代…

R语言使用随机过采样(Random Oversampling)平衡数据集

随机过采样(Random Oversampling)是一种用于平衡数据集的技术,常用于机器学习中处理类别不平衡问题。当某个类别的样本数量远少于其他类别时(例如二分类中的正负样本比例悬殊),模型可能会偏向多数类&#x…

【Kotlin】高阶函数Lambda内联函数

【Kotlin】简介&变量&类&接口 【Kotlin】数字&字符串&数组&集合 【Kotlin】高阶函数&Lambda&内联函数 【Kotlin】表达式&关键字 文章目录 函数还是属性高阶函数抽象和高阶函数实例: 函数作为参数的需求方法引用表达式更多使用场…

从0开始学vue:vue3和vue2的关系

一、版本演进关系1. 继承关系2. 版本生命周期 二、核心差异对比三、关键演进方向1. Composition API2. 性能优化 四、迁移策略1. 兼容构建模式2. 关键破坏性变更 五、生态演进1. 官方库升级2. 构建工具链 六、选型建议1. 新项目2. 现有项目 七、未来展望 一、版本演进关系 1. …

MySQL关系型数据库学习

学习参考链接:https://www.runoob.com/mysql/mysql-tutorial.html Windows 安装MYSQL服务端的步骤:https://www.runoob.com/w3cnote/windows10-mysql-installer.html 1. 概念学习 MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不…

嵌入式硬件篇---龙芯2k1000串口

针对串口错误 “device reports readiness to read but returned no data (Device disconnected or multiple access on port?)” 的排查和解决方法 硬件方面 检查连接 确认串口设备(如串口线、连接的模块等)与龙芯设备之间的物理连接是否牢固&#xf…

谷歌地图苹果版v6.138.2 - 前端工具导航

谷歌地图(Google maps)苹果版是是由谷歌官方推出的一款手机地图应用。软件功能强大,支持本地搜索查找世界各地的地址、地点和商家;支持在街景视图中查看世界各地的360度全景图;支持查找乘坐火车、公交车和地铁的路线,或者查找步行…

NSSCTF [LitCTF 2025]test_your_nc

[复现]绕过学的还是太差了&#xff0c;多积累吧 ​​​​​​题目 题目: 给了一个python文件 #!/bin/python3 import osprint("input your command")blacklist [cat,ls, ,cd,echo,<,${IFS},sh,\\]while True:command input()for i in blacklist:if i in com…

Qwen3高效微调

高效微调 场景、模型、数据、算力 高效微调的应用场景 对话风格微调&#xff1a;高效微调可以用于根据特定需求调整模型的对话风格。例如&#xff0c;针对客服系统、虚拟助理等场景&#xff0c;模型可以通过微调来适应不同的 语气、礼貌程度 或 回答方式&#xff0c;从而在与…

Gitee Wiki:重塑关键领域软件研发的知识管理范式

在数字化转型浪潮席卷全球的当下&#xff0c;关键领域软件研发正面临前所未有的知识管理挑战。传统文档管理模式的局限性日益凸显&#xff0c;知识传承的断层问题愈发严重&#xff0c;团队协作效率的瓶颈亟待突破。Gitee Wiki作为新一代知识管理平台&#xff0c;正在通过技术创…