ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

SQLite安装实战:从命令行到可视化工具的一站式指南

SQLite安装实战:从命令行到可视化工具的一站式指南 SQLite这个数据库可能是很多人最早接触的数据库也可能是很多人一直没搞明白该怎么安装的数据库。最近身边好几个朋友都在问SQLite到底是装还是不装、装完以后用哪个可视化工具比较顺手这篇文章就把我实际的安装过程、工具选择和使用经验一次性讲清楚。SQLite是一个内嵌式关系型数据库它不像MySQL或SQL Server那样需要单独启动一个服务进程所有数据都保存在一个独立的.db文件里使用的时候只需要通过库文件或者命令行工具去操作这个文件就行。正因为它零配置、单文件、跨平台这几个特点很多小工具、移动App、嵌入式设备、数据分析脚本里都拿它当默认存储方案。新手想学SQL语法、做个人小项目或者旧工具需要迁移数据都可以先拿SQLite练手成本非常低不会出现装个数据库折腾一晚上的尴尬。这篇文章会覆盖Windows、Linux、macOS三个平台的安装方法、常用命令、可视化工具选型以及我实际使用中踩过的常见问题。你是哪种基础都不吃亏纯新手可以照步骤一步步来老手可以直接跳到可视化工具和排查章节。1. 为什么选择SQLite而不是MySQL或PostgreSQL1.1 SQLite到底是什么先把这个概念说清楚。SQLite不是一个数据库服务器它本质上是一个C语言编写的函数库应用程序直接把SQLite引擎链进自己的进程里通过调用库函数来读写数据库文件。在命令行里你接触到的sqlite3.exe也只是一个简单的shell负责把SQL语句转给引擎执行。这个设计带来一个巨大的差异你不需要安装服务、不需要启动进程、不需要配置监听端口也不需要操心用户名密码。整个数据库就是磁盘上的一个普通文件比如test.db。这个文件里可以包含多张表、多个索引、多个视图所有内容都在这个文件里。你想备份数据库直接复制文件就行你想迁移数据库把文件拷到另一台机器上就行只要对方机器上有SQLite的引擎。这种数据库就是文件的特性在嵌入式开发和桌面应用开发里非常省心说是文件式工具箱一点不夸张。1.2 核心优势与适用场景我总结SQLite的几个核心优势是零配置解压即用不需要装服务、开机启动、端口管理几乎不需要DBA介入。单文件存储整个数据库是一个文件可复制、可压缩、可放到U盘带走。跨平台Windows、Linux、macOS、Android、iOS都能用同一套.db文件。事务完整支持ACID事务支持常见的SQL语法该有的约束、索引、视图都有。不需要网络权限进程内操作无网络支出数据也不会在网络传输中被截获。这些特性决定了SQLite特别适合几类场景第一类是嵌入式设备比如路由器、传感器、收银机上的数据存储第二类是桌面软件很多PC工具的配置数据、本地缓存都用SQLite第三类是移动端App微信、浏览器这类应用内部都有SQLite的影子第四类是数据分析过程中的中间存储脚本处理一批数据时临时建个库效率很高。不过SQLite也不是万能的。它不适合高并发写入场景因为同一时刻只允许一个进程写数据库写入时还会锁住整个库文件它也不适合需要细粒度权限控制的场景没有用户系统单库数据量非常大、超过几十GB时读写性能也会明显下降。所以要不要选SQLite得先看你的应用场景是不是它擅长的方向。1.3 和MySQL、PostgreSQL怎么选很多人第一次学数据库就直接上MySQL我也理解但SQLite其实是更轻的起点。做选型的时候我一般会直接用几个问题来过滤需不需要多个客户端同时通过网络访问需要请考虑MySQL或PostgreSQL不需要SQLite足够。有没有专职的人维护数据库服务没有SQLite更省事。有没有高并发写入需求有SQLite基本扛不住没有SQLite更省事。数据量大概会到多大单个文件超过几十GB建议换服务型数据库。用表格对比更直观对比项SQLiteMySQLPostgreSQL部署方式内嵌库无需服务独立服务进程独立服务进程配置文件基本没有需要my.cnf等需要postgresql.conf账号权限无用户系统有完整权限体系有完整权限体系典型文件单文件.db数据目录下多个文件数据目录下多个文件网络访问不支持默认支持TCP连接支持TCP连接适用场景嵌入式、桌面、学习Web应用、传统业务复杂查询、数据分析如果你是做个人项目、学习SQL、写小工具SQLite真的够了。我自己写分析脚本时也经常用它比启动本地MySQL快得多也不占内存。2. 安装前需要知道的几件事2.1 区分命令行工具和库文件先搞清楚要下载什么官网下载区一般分几类文件。刚开始学的时候很容易被下载页上一排看不懂的文件名搞晕其实只要认准带tools字样的就行了。官网下载地址 https://www.sqlite.org/download.html 下通常有以下几种类型sqlite-tools-win-x64-xxxxxxx.zipWindows下的命令行工具包里面包含sqlite3.exe、sqlite3_analyzer.exe等。sqlite-dll-win-x64-xxxxxxx.zipWindows下的动态库给开发者在程序里调用SQLite引擎用的。sqlite-amalgamation-xxxxxxx.zipC语言源码合集需要源码编译时才用。普通用户安装命令行工具只要下载第一个包就好。后面提到的可视化工具一般会自带SQLite引擎跟我们下载的这个命令行工具互不影响。2.2 32位还是64位以及一个好消息这个问题经常有人问。命令行工具优先选64位现在主流系统都是64位了解压后直接能用。问题是有些程序因为内部限制还是32位需要调用32位的SQLite DLL如果位数不匹配程序加载DLL时会报试图加载格式不正确的程序。这种报错不是你代码写错就是DLL位数跟目标进程不一致。再强调一点很多编程环境已经自带SQLite了。最典型的就是Python从Python 2.5开始标准库就内置sqlite3模块不需要额外安装任何东西直接import就能用。所以如果你只是想做数据操作练习先在Python里敲两行代码验证一下环境比专门下载sqlite3.exe更快。很多数据分析场景下Python自带的sqlite3模块已经能满足八成需求了所谓的安装SQLite只是在你有更多手动操作需求时才真正需要。2.3 先确认你的环境Windows用户可以打开命令提示符或PowerShell依次输以下命令确认状态python --version sqlite3 --version第一条用来确认Python是否安装第二条用来确认系统里是不是已经有sqlite3命令。如果第二条报不是内部或外部命令说明还没安装继续看下面的安装步骤。如果第一条有输出那你其实已经可以开始用SQLite了只是命令行工具缺失而已。Linux用户可以执行which sqlite3 python3 -c import sqlite3; print(sqlite3.sqlite_version)这样能快速判断当前环境的情况。我见过不少人在虚拟机里装完Linux后直接敲sqlite3发现没有这个命令这不代表系统不支持SQLite只是发行版默认没装命令行shell。3. Windows系统下SQLite安装全流程3.1 方式一官方预编译命令行工具这是最标准、最通用的一种安装方式适合想在任意目录直接操作数据库的人。步骤并不复杂照着做就行。第一步打开SQLite官网下载页找到Windows区域。文件命名规律大概是sqlite-tools-win-x64-3470100.zip这种其中数字部分是版本号会随更新变化。x64表示64位如果你需要32位可以找带x86的版本不过现在大多数场景都用x64。第二步下载对应zip包解压到固定目录。我习惯放在C:\sqlite里面只有一个bin目录或者直接就是几个exe文件。这里有个小建议不要解压到桌面或临时文件夹因为后面还要配环境变量临时路径一旦清理命令就没了。解压完确认目录里有sqlite3.exe。第三步配置环境变量。右键此电脑 → 属性 → 高级系统设置 → 环境变量 → 在系统变量中找到Path选中后点编辑 → 新建 → 填入C:\sqlite → 确定。注意这一步必须把目录路径填到Path里而不是建一个名为sqlite的变量很多新手容易弄混。第四步重新打开一个命令行窗口输入sqlite3 --version如果输出了类似3.47.0这样的版本号说明安装成功。如果还是提示找不到命令检查一下是不是路径填错了或者有没有重新打开终端窗口。环境变量是启动进程时读取的旧窗口不会自动刷新。3.2 方式二用Python自带的sqlite3模块前面说过Windows下的Python发行版默认就带sqlite3模块。很多人不知道这一点还在网上找包来装。验证方法很简单python -c import sqlite3; print(sqlite3.sqlite_version)如果输出一个版本号比如3.46.0说明当前Python环境里已经有SQLite引擎了。接下来你写Python脚本就可以直接操作SQLite数据库连sqlite3.exe都不需要。这种方式特别适合做数据分析和自动化脚本。但要注意Python自带的sqlite3只是库不是命令行shell。你想在终端里手动敲SQL命令还是需要用官方命令行工具或可视化工具。所以Python自带的这一层更多是给开发场景用的跟命令行工具互补互不冲突。3.3 Linux和macOS安装要点Linux下安装命令行工具不同发行版用的命令不一样。Debian/Ubuntu系用aptsudo apt update sudo apt install sqlite3CentOS/RHEL/Fedora系用yum或dnfsudo yum install sqlite装完同样验证一下版本sqlite3 --versionmacOS下如果装了Homebrew一条命令就搞定brew install sqlite3macOS其实系统内置了sqlite3命令行工具但版本可能比较旧或者因为系统完整性保护导致PATH里有但不方便直接访问。用brew装一份新的路径在/usr/local/opt/sqlite/bin/sqlite3使用时可以把它加入PATH。这里有个小提醒Linux发行版自带的Python版本一般也内置sqlite3所以哪怕你没装命令行工具Python脚本照样能操作数据库。如果遇到import sqlite3报错多半是编译Python时SQLite头文件缺失导致的通常重新编译或换官方Python安装包就能解决不用怀疑SQLite本身有问题。3.4 配置好环境变量后如何自检安装完成不等于万事大吉我建议做两件小操作。第一件执行where sqlite3Windows或which sqlite3Linux/macOS确认当前使用的是哪个目录下的sqlite3避免之前装过旧版本导致版本混乱。第二件进入一个空目录执行sqlite3 test.db然后执行.exit退出看目录下是否生成了test.db文件能生成说明整个读写链路没问题。另外很多开发者喜欢用包管理器安装SQLite比如Windows下的winget、ChocolateymacOS下的Homebrew其实都可以。以winget为例winget install SQLite.SQLite装完后可能需要手动把解压目录加入PATH。包管理器的好处是升级方便缺点是部分版本打包不及时或者解压路径比较隐蔽。我个人日常还是推荐直接从官网下载zip包步骤透明、不依赖额外工具。4. 第一次使用SQLite建库、建表与常用命令4.1 用命令行创建第一个数据库安装完sqlite3.exe后在命令行里进入你打算放数据库文件的目录然后执行sqlite3 test.db这一步会做两件事如果test.db不存在它会在当前目录创建这个空文件如果已存在则直接打开。进入SQLite提示符后先试着输入.databases这个命令能列出当前连接的所有数据库文件你会看到一行类似seq name file的信息说明连接正常。然后输入CREATE TABLE user ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER, created_at TEXT DEFAULT (datetime(now)) );再执行.tables能看到user表。到这里一个可用的数据库就建好了整个过程没有启动任何服务也没有配任何用户权限。这就是SQLite的典型使用方式文件即库命令即操作。4.2 常用SQL操作和命令行技巧建好表之后最常用的几个操作我列一下。插入数据INSERT INTO user (name, age) VALUES (张三, 28);查询数据SELECT * FROM user WHERE age 20;更新数据UPDATE user SET age 29 WHERE name 张三;删除数据DELETE FROM user WHERE id 1;这些SQL语法跟MySQL基本一样学起来几乎没有额外成本。命令行里还提供了一批以点号开头的内部命令叫点命令下面这几个很常用.tables列出所有表。.schema user显示user表的建表语句。.headers on查询结果里显示列名。.mode column以列对齐方式显示结果方便阅读。.mode csv切换成CSV格式输出。.import 文件名 表名把CSV文件导入表中。.output 文件名把后续查询结果输出到文件。.width 10 20 30设置列宽配合.mode column使用效果很好。.exit退出命令行。实际操作中我经常用.mode column加.headers on来快速预览一个表的数据比什么工具都不装、直接看混乱的文本输出舒服得多。如果想把查询结果保存下来可以先.output result.csv再执行一条SELECT语句然后.output stdout恢复终端输出最后打开result.csv就能看到结果。这一套在写临时分析脚本时非常实用。4.3 自动序号、事务和其他容易踩的坑SQLite里有两个容易混淆的机制INTEGER PRIMARY KEY和AUTOINCREMENT。如果你把主键声明为INTEGER PRIMARY KEYSQLite会自动分配一个递增的整数值也就是rowid只有当你显式加上AUTOINCREMENT它才保证这个递增序列永不复用。对大多数场景来说INTEGER PRIMARY KEY就够了AUTOINCREMENT会额外维护一个序列表写入性能稍微差一点。插入数据后想拿到自动生成的ID可以使用last_insert_rowid()函数。在Python的sqlite3模块里对应的做法是cursor.lastrowid。这个场景很典型比如先插入一条用户记录再用返回的ID去关联创建订单。要注意的是如果没有显式声明主键SQLite也会默认隐藏一个rowid字段你可以用last_insert_rowid()获取它。事务方面SQLite默认是每条SQL语句自动提交。批量插入数据时如果几千条语句逐条提交速度会慢很多。我建议使用显式事务BEGIN; INSERT INTO user (name, age) VALUES (a, 1); INSERT INTO user (name, age) VALUES (b, 2); -- ...更多语句 COMMIT;这样能明显减少磁盘写入次数提升批量操作速度。如果中途出错可以执行ROLLBACK回滚保证数据一致性。5. 可视化工具介绍与选型5.1 DB Browser for SQLite最推荐的开源选择命令行用起来虽然稳但看表结构、编辑数据、导入导出还是图形界面方便。前几年我一直在用DB Browser for SQLite它是目前开源界最主流的SQLite图形客户端之一Windows、Linux、macOS三平台都有安装包。它的界面分几个核心区域Database Structure数据库结构、Browse Data浏览数据、Execute SQL执行SQL、Edit Pragmas参数设置。新建数据库、导入CSV、导出数据都是傻瓜式操作。最让我舒服的一点是它打开一个.db文件不需要建什么连接配置文件拉进去就能看特别符合SQLite即开即用的气质。下载地址可以直接去官网 sqlitebrowser.org也可以到GitHub的Release页面找最新版。Windows版有安装版和免安装版我一般下载zip免安装版解压就能用放在工具盘里随取随用。如果你不想去官网Debian/Ubuntu下可以用apt install sqlitebrowsermacOS下可以用brew install --cask db-browser-for-sqlite。5.2 DBeaver Community通用数据库管理工具如果你手头同时管理MySQL、PostgreSQL、SQLite等多种数据库DBeaver Community是一个更统一的选择。它是基于Java开发的通用数据库客户端社区版免费开源功能已经非常强支持连接各种数据库、执行查询、查看执行计划、数据导出等。DBeaver连接SQLite时只需要在新建连接里选SQLite然后指定.db文件路径就行。它会把整个数据库当做一个连接并不需要额外启动服务。和DB Browser比DBeaver的界面更接近企业级IDE左侧对象树、标签页、查询编辑器都很齐全适合从其他数据库工具迁过来的人。使用DBeaver前要确认系统里有Java环境没有的话会提示你安装JDK或JRE。装Java这一步本身不难但如果你机器上什么都没配置多一道环境折腾。所以我个人建议只操作SQLite优先选DB Browser已经装了DBeaver或者以后还要管别的数据库就顺手用DBeaver。5.3 SQLiteStudio和Navicat for SQLiteSQLiteStudio也是一款相当轻量的开源图形客户端。它的特点是整个程序就是一个可执行文件绿色免安装启动速度很快。功能上该有的都有浏览表结构、执行SQL、导入导出、图形化查询构建。如果你的电脑配置不高或者就是想要一个打开很快的小工具SQLiteStudio值得试一试。Navicat for SQLite是老牌商业化工具Navicat系列里针对SQLite的产品。界面设计非常成熟导入导出、数据同步、备份恢复都做得比较好功能也丰富但它是收费软件还需要激活授权。对个人学习和小项目来说免费工具完全够用没必要一开始就上付费工具。不过企业团队里如果需要统一品牌、统一操作体验Navicat确实可以减少培训成本。5.4 几个可视化工具的参数对比工具免费/开源跨平台体积适合场景DB Browser for SQLite免费开源是中等专注SQLite日常操作最稳DBeaver Community免费开源是较大多数据库统一管理SQLiteStudio免费开源是小轻量快速、绿色免安装Navicat for SQLite收费是较大企业团队、界面控sqlite3命令行免费是极小脚本、服务器运维选型的标准很简单你平时主要碰哪种数据库如果只有SQLiteDB Browser基本是最佳答案如果同时要管多种数据库DBeaver更顺手如果只想看个表、改个数据SQLiteStudio也能胜任。命令行工具无论如何都建议装一份它在你没有图形界面时是最后的救命稻草。6. 实战用DB Browser完成建库、导入、导出与调试6.1 安装DB Browser for SQLite在Windows上去官网下载页面选择64位安装包双击安装即可中途可以自定义安装路径。想更省事可以直接选zip版解压到任意目录后运行DB Browser for SQLite.exe。Linux用户可以用apt或snap安装macOS用户用dmg或Homebrew。安装完成后先别急着操作我建议新建一个练习目录比如D:\sqlite_lab把要处理的CSV文件和下载好的DB Browser都放在附近。很多人在导入CSV时报路径错误就是因为文件放在了带中文和空格的复杂路径下虽然一般能处理但减少变量能降低出问题的概率。装好以后第一次打开界面是英文的可以在编辑 → 偏好设置里切换成中文对新手更友好。6.2 新建数据库与导入CSV打开DB Browser后工具栏上有新建数据库按钮点它选择保存路径和文件名比如test.db。程序会弹窗要求建表我可以直接在这里建表也可以取消后通过SQL建表。这里演示用导入方式建表先准备一个csv文件比如users.csv内容有表头一行类似id,name,age下面是若干行数据。然后在DB Browser菜单里选择文件 → 导入 → 从CSV文件导入表选择users.csv。导入时有一个容易踩坑的点CSV文件的编码。如果CSV是中文内容文件可能是UTF-8或GBK编码。DB Browser默认按UTF-8识别如果你的CSV是GBK编码导入后会出现乱码。解决办法是在导入窗口里手动选择正确的编码一般有UTF-8、GB2312、GBK等选项。另外要确认第一行是不是表头以及分隔符是不是逗号如果CSV是分号或制表符分隔也要在导入选项里改。导入完成后到数据库结构标签页能看到自动生成的表结构和字段类型到浏览数据标签页能直接看到全表内容。这里有个细节DB Browser导入CSV时会根据内容自动推断字段类型但有时候推断并不完美比如数字列可能被识别成TEXT。如果对类型要求严格建议先用SQL手动建表再使用导入功能把数据追加进去这样字段类型完全可控。6.3 执行SQL与导出结果在DB Browser的执行SQL标签页里可以输入任意SQL语句选中对应语句后执行。它支持同时写多条SQL只要用分号分隔即可。执行结果会显示在下方的数据表格中点击具体查询语句还能单独查看该语句的结果集。导出功能同样很实用。比如查询出年龄大于25的用户后想把这部分数据交给同事可以在浏览数据或查询结果窗口里找到导出选项选择导出为CSV、JSON或SQL文件。导出为SQL文件时程序会生成包含建表语句和INSERT语句的脚本之后在另一台机器上执行这个脚本就能还原数据。这对小规模数据迁移非常方便。如果你需要定期把SQLite的数据导给其他系统比如导给MySQL我建议导出时留意字段类型转换。SQLite的TEXT可能对应MySQL的VARCHARSQLite的INTEGER对应MySQL的INT或BIGINT这些映射关系不总是自动完美偶发需要手动调整。6.4 表结构设计小技巧SQLite对ALTER TABLE的支持比较有限官方只支持重命名表和新增列。如果你想修改一个已有字段的类型、删除字段、或者增加约束SQLite不能直接完成通常的替代做法是重建表先创建一张新表把旧数据复制过去删除旧表再把新表重命名。这个流程在DB Browser里已经做了简化。比如在数据库结构中右键一张表选择修改表它其实就是在后台执行新建临时表copy数据删除原表rename这一套操作。但你手动执行SQL时如果不了解这一层直接用ALTER TABLE CHANGE COLUMNSQLite会直接报语法错误。这一点和MySQL差异很大初学的时候很容易卡住。另外建议在SQL里定期执行一下PRAGMA语句排查结构。常用几个PRAGMA table_info(user);查看表的字段信息。PRAGMA index_list(user);可以查看表上的所有索引。PRAGMA journal_mode;可以查看日志模式判断是否处于WAL模式。7. 常见问题排查与避坑记录7.1 打不开数据库文件命令行里提示unable to open database file是最常见的一个错误。排查顺序一般是第一确认文件路径是否正确尤其检查相对路径是否跟当前目录一致第二确认当前用户对文件所在目录是否有读写权限第三确认文件没有被其他程序独占打开Windows下Excel或另一个数据库进程可能锁着文件第四确认文件确实是SQLite格式有些文本编辑器会生成带BOM头的文件看起来是.db后缀实际不是SQLite数据库。用DB Browser打开一个确实损坏的数据库文件通常会弹出file is not a database或database disk image is malformed提示。这种情况基本只能通过备份来恢复所以我的建议是重要数据库每天做一次文件复制备份有条件的话在程序层调用SQLite的在线备份接口不要等到文件损坏了再想补救。7.2 database is locked 如何处理database is locked是SQLite多进程场景下最典型的报错。SQLite的锁粒度是整库级别的一个进程在写时其他进程的写操作会被阻塞如果等待超时就会报这个错。解决思路有几个方向第一缩短事务时间不要在一个事务里做耗时的网络请求或大循环第二重试机制应用层捕获locked错误后等待几十毫秒再重试第三提高超时时间命令行里可以设置PRAGMA busy_timeout 5000第四启用WAL日志模式PRAGMA journal_modeWAL这种模式下读写可以并发对多进程读多写少的场景有很明显的改善。我在自己的工作里遇到database is locked大多数是程序长期持有写事务没有提交导致的。先检查代码里有没有未提交的事务比盲目改WAL更有效。只有确认事务逻辑没问题后才考虑调busy_timeout或者切WAL。7.3 中文乱码问题中文乱码通常出现在两个地方。一个是从CSV导入时源文件编码和识别编码不一致解决方法是导入前用文本编辑器或命令行工具确认文件编码再在DB Browser导入窗口里选择正确编码。另一个是从命令行输出中文时乱码Windows终端默认代码页可能不是UTF-8可以先执行chcp 65001切换为UTF-8代码页再重新打开SQLite会话中文显示大多能正常。数据库内部存储方面SQLite本身以UTF-8文本为主你在程序里写入UTF-8字符串读出来也是UTF-8一般不会出问题。出问题往往发生在跨系统场景比如Windows上用GBK编码写入的数据拿到Linux下用UTF-8读取容易显示乱码。因此我建议所有项目从源头就统一使用UTF-8编码程序写入、终端读取、CSV文件都保持同一个编码能省掉大量烦恼。7.4 .NET连接SQLite的驱动注意事项网上很多搜net4.8连接sqlite的人其实是开发时需要用C#连接SQLite。常用的驱动有两个System.Data.SQLite和Microsoft.Data.Sqlite。System.Data.SQLite功能更全支持加密和扩展函数Microsoft.Data.Sqlite更轻量ADO.NET标准接口是微软官方维护的版本。用System.Data.SQLite时最常遇到的坑是平台位数不匹配。系统是64位但应用程序生成的是x86或者反过来加载SQLite.Interop.dll时会报错。解决办法是保证应用程序的目标平台和引用的SQLite包位数一致在Visual Studio里把生成 → 目标平台改成x64或x86并安装对应该位数的SQLite包。如果看到试图加载格式不正确的程序十有八九就是这个原因。使用Microsoft.Data.Sqlite时需要额外注意它依赖于SQLitePCLRaw组件安装NuGet包时应该一并处理。另外连接字符串里如果用Data Sourcetest.db路径是相对当前工作目录的发布程序后如果工作目录变化容易找不到数据库文件建议使用绝对路径或者通过Path.Combine基于程序目录构造路径。7.5 实用排查命令速查表场景命令/操作查看SQLite版本sqlite3 --version查看当前数据库.databases查看所有表.tables查看表结构.schema 表名查看索引PRAGMA index_list(表名);设置忙等待时间PRAGMA busy_timeout 5000;查看日志模式PRAGMA journal_mode;开启WAL模式PRAGMA journal_modeWAL;输出为CSV.mode csv 加 .output 文件名退出命令行.quit这些命令和PRAGMA语句是排查问题的第一手工具建议收藏。真遇到问题的时候先别急着换工具用最快的方式定位是文件问题、锁问题还是编码问题往往比反复卸载重装更有效。我个人在实际使用中SQLite最常出现的地方有两类一类是给数据分析脚本当临时数据库一类是给桌面小工具做配置存储。我的经验是不要一上来就装一堆可视化工具先想清楚拿它做什么。只做练习命令行工具加DB Browser就够如果是开发具体应用优先考虑让应用内置SQLite而不是要求用户去安装一个数据库服务。最后分享一个踩坑心得批量导入几万条数据时逐条INSERT会慢得让人暴躁先开一个事务把几千条放在同一个事务里提交速度能快很多。还有备份SQLite虽然直接复制.db文件就行但复制前最好执行一下VACUUM把文件里的空洞清掉备份体积会小不少。希望这篇对你有实际帮助。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进