Sublime Text 无法直接导入不规则 CSV 到 SQLite,因其仅为文本编辑器,无数据清洗、类型推断或 .import 命令执行能力;需先在 Sublime 中统一编码、修复引号、校验表头,再通过 sqlite3 或 sqlite-utils 导入。

直接用 Sublime Text 导入不规则 CSV 到 SQLite 是行不通的——它没有内置清洗或类型推断能力,也不能执行 .import 命令。但 Sublime 可以作为高效的数据预处理编辑器,配合命令行工具完成整个流程。关键在于:先在 Sublime 里“看清楚、改干净”,再交给 sqlite3 或 sqlite-utils 执行导入。
为什么不能直接在 Sublime 里“一键导入”
Sublime Text 是纯文本编辑器,不是数据库客户端。即使装了 SublimeSQL 插件,它只支持 SQL 查询和语法高亮,不支持 CSV 解析、字段对齐、编码转换或数据清洗。你看到的 CSV 文件如果存在以下情况,Sublime 本身无法自动修复:
- 字段数不一致(某行多一个逗号,导致列错位)
- 含换行符的字段未用双引号包裹(如地址字段含
) - 中文是 GBK 编码但被误读为 UTF-8(显示乱码,后续导入必失败)
- 首行表头缺失或字段名含空格/特殊字符(如
user id,SQLite 默认不认)
用 Sublime 清洗不规则 CSV 的实操要点
目标不是“美化”,而是让 CSV 达到 sqlite3 .import 或 sqlite-utils insert 能稳定解析的最低标准。重点操作包括:
使用 qbo-mileage CLI 及用户凭证,从 Airtable、Outlook 或 Google Calendar 记录生成 QuickBooks Online 里程 CSV 文件。
-
统一编码:用 Sublime 的
File → Reopen with Encoding → UTF-8强制转码;若仍乱码,说明原始是 GBK,需选GBK再另存为 UTF-8(注意不要选UTF-8 with BOM,SQLite 会拒识) -
可视化分隔符:启用
View → Show Whitespaces,确认字段间是纯英文逗号(,),而非全角逗号、分号或制表符 -
修复引号包裹:对含逗号、换行、双引号的字段,手动或正则批量补全双引号。例如用正则
^([^,]*),([^,]*),(.*)$匹配三列,再替换为"$1","$2","$3"(需结合实际列数调整) -
删空行 & 表头校验:用
Find → Find All搜^$删除所有空行;确保第一行是完整、无缺失的字段名,且不含前导/尾随空格
清洗后导入 SQLite 的两种可靠路径
清洗完保存为 clean.csv,接下来选一种方式执行导入。别跳过验证步骤:
-
用原生命令行(零依赖):
打开终端,进入 CSV 所在目录,运行:sqlite3 my.db ".mode csv" ".import clean.csv my_table"
⚠️ 注意:my_table必须已存在,且列数、顺序、类型要与 CSV 匹配;否则报expected 5 columns but found 6错误 -
用 sqlite-utils(推荐,自动建表):
先安装:pip install sqlite-utils
再执行:sqlite-utils insert my.db my_table clean.csv --detect-types
✅ 它会自动识别数字、布尔、日期,并设为INTEGER/REAL/TEXT;加--pk=id还能设主键
最容易被忽略的三个坑
90% 的失败都卡在这三点,且错误信息极不直观:
-
sqlite3的.import默认把所有字段当TEXT处理,即使 CSV 里全是数字,查SELECT typeof(age)也会返回text—— 如果你需要数值计算,必须提前建好带正确类型的表 - Windows 路径中反斜杠
在.import里会被当转义符,务必用正斜杠/或双反斜杠\,例如.import data/clean.csv my_table - Sublime 保存时若勾选了
Unix (LF)换行,而原始 CSV 是 Windows (CRLF),sqlite-utils可能误判最后一列为"value ",导致插入失败或字段值带

















