登录
推荐 文章 Go 技术 课程 下载 专题 AI
首页 >  文章 >  软件教程

SQLiteStudio 怎样导入 CSV 并指定字段类型

来源:17golang原创

时间:2026-10-23 05:23:38 242浏览 收藏

在 SQLiteStudio 里导入 CSV,如果希望金额、编号和日期列拥有明确的字段类型,关键不是在导入窗口里“猜类型”,而是先创建目标表,再把 CSV 导入这张已有表。这样字段顺序、字段名和声明类型都由表结构控制,导入器只负责解析文件和写入行。

官方入口:https://sqlitestudio.pl/

SQLiteStudio 的官方入口目前会跳转到后续名称为 Letos 的项目:https://letos.org/。本文仍沿用读者常用的 SQLiteStudio 叫法;下面的菜单文案如果因版本变化略有差异,优先寻找 Import、CSV 和目标表选择项。

最短路径:准备带表头的 CSV → 先建好类型明确的目标表 → 打开 Import 选择 CSV → 正确处理首行、分隔符和空值 → 导入后查看表结构、typeof() 和行数。文中的界面图是原创操作说明图,不是 SQLiteStudio/Letos 的实际截图。

先把 CSV 的列顺序和空值约定说清楚

假设 CSV 有四列,第一行是表头:

-- 这段 CSV 只用于说明列顺序,实际文件不要保留这行注释
id,order_no,amount,created_at
1001,A-20261023-01,19.90,2026-10-23 09:30:00
1002,A-20261023-02,8.50,2026-10-23 09:31:00

先确认三件事:第一行是否真的是列名;字段分隔符是逗号、分号还是制表符;空字段要保留为空字符串,还是映射为 SQLite 的 NULL。SQLiteStudio 的 CSV 导入插件支持首行列名、自定义分隔符和 NULL 值选项,这些设置错一项,后面看到的“字段类型异常”往往其实是解析错位。

先创建字段类型明确的目标表

不要直接让导入器创建一张临时表再期待它自动判断类型。SQLite 的列声明允许使用 INTEGER、TEXT、NUMERIC 等类型名,但实际存储仍会受输入值和列亲和性影响,所以“声明类型”和“每个单元格最终存储类型”要分开验收。

-- 先固定列顺序和声明类型,导入时选择这张已有表
CREATE TABLE orders_import (
    id INTEGER,
    order_no TEXT,
    amount NUMERIC,
    created_at TEXT
);

-- 用结构信息确认字段名、顺序和声明类型
PRAGMA table_info(orders_import);
  1. 在左侧数据库树中选中目标 SQLite 数据库。
  2. 打开 SQL 编辑器,执行上面的建表语句;也可以在表设计界面逐列添加同样的字段。
  3. 刷新表列表,确认 orders_import 出现在目标数据库中。

这一步完成后,图形界面中的字段类型已经由目标表固定。后续 CSV 第一列必须对应 id,第二列对应 order_no,不能只靠表头文字“自动匹配”来弥补列顺序错误。

原创界面说明图:SQLiteStudio 中预先创建目标表并查看字段类型
图1:目标表与字段类型说明图,先确认列顺序和声明类型,再进入 CSV 导入。

从 Import 入口选择 CSV 并导入已有表

  1. 在数据库树或目标表的上下文菜单中找到 Import;部分版本会从工具菜单进入。
  2. 数据源选择 CSV,在文件选择框中选中 CSV 文件。
  3. 如果文件第一行是 id,order_no,amount,created_at,勾选“第一行代表列名”或同义选项。
  4. 把目标设置为已经创建的 orders_import,不要选择新建临时表。
  5. 按文件实际情况设置编码、分隔符和 NULL 规则,然后执行导入。

导入已有表时,首行列名主要用于跳过表头,目标表的字段名和声明类型不会被 CSV 表头重写。CSV 的字段数也要和目标表的列数对应;如果多了一列或少了一列,先回到文件或表结构修正,不要用错位导入去“凑成功”。

导入完成后,界面应能回到表的数据视图并看到新增行。此时只看见两行并不足以证明类型正确,还要继续做结构和数据值核对。

用表结构、typeof() 和行数完成结果核对

可以在 SQL 编辑器执行下面的检查。查询结果应该同时回答“表怎么声明”和“实际值怎么存储”两个问题:

-- 查看声明类型与每列的顺序
PRAGMA table_info(orders_import);

-- 查看样例值的实际存储类型,并核对导入行数
SELECT id,
       typeof(id) AS id_storage,
       order_no,
       typeof(order_no) AS order_no_storage,
       amount,
       typeof(amount) AS amount_storage,
       created_at,
       typeof(created_at) AS created_at_storage
FROM orders_import
ORDER BY id;

-- 统计导入结果,避免只凭界面当前页判断数量
SELECT COUNT(*) AS imported_rows FROM orders_import;

对于示例数据,order_no 和 created_at 通常应保持 text;amount 可能表现为 integer 或 real,这是 SQLite 数值存储的正常差异,不必把它误判成导入失败。若金额列全部是 text,先检查 CSV 是否带有不可见空格、货币符号或小数格式,再决定是否清洗原文件。

原创界面说明图:SQLiteStudio 导入完成后查看数据表、字段类型和行数结果
图2:结果核对说明图,同时查看数据表、类型结果和导入行数,不把导入完成提示当作最终验收。

列数、表头或类型不对时怎么修正

导入后第一行也出现在数据里:重新打开导入选项,确认已启用首行列名;如果导入的是已有表,检查是否选中了正确的 CSV 插件和目标表。

数据整体向右错一列:检查分隔符。逗号文件不要按分号解析,带逗号的文本字段还要确认 CSV 的引号是否成对。

字段类型看起来不对:先执行 PRAGMA table_info 区分声明类型,再执行 typeof() 查看实际值类型。修复时优先重新清洗 CSV 或清空后重导,不要只修改界面显示。

需要重复导入:先备份或清空目标表,再重复同一套导入配置;如果是持续任务,可以把首行、分隔符、NULL 规则和目标表字段顺序写进团队操作记录。

相关问题

CSV 导入时能不能直接在导入窗口里给每列选 INTEGER 或 TEXT?稳定做法是先建立目标表并定义字段类型,再导入到已有表。临时建表适合快速查看,不适合需要稳定结构的业务数据。

为什么声明为 NUMERIC 后结果有时是 integer、有时是 real?SQLite 会根据输入值和列亲和性选择实际存储类型;验收时应同时看 PRAGMA table_info 与 typeof(),不要只看一个字段。

官方入口还是 SQLiteStudio 吗?原入口 https://sqlitestudio.pl/ 当前指向 Letos 官方站点;Letos 页面说明它是 SQLiteStudio 的后续名称。下载或查看文档时优先从这两个官方地址进入。

声明:本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>