第 08 章导入与导出
导出支持 CSV / JSON / SQL INSERT 三种格式;导入只支持 CSV。 两个操作都在后台做,大表也不会把界面卡住。
导出
四个入口
| 入口 | 导出的内容 |
|---|---|
对象树右键表 → 导出… | 整张表,没有过滤条件 |
数据视图状态栏 导出… | 当前过滤条件下的全部数据(不是只导当前页) |
查询结果标签右键 → 导出结果… | 该结果集的全部行 |
右键选中行 → 导出选中行… | 仅选中的那些行 |
注意导的是「全部」不是「当前页」
在数据视图里点导出,导出的是满足当前过滤条件的全部行,
而不是你眼前这一页的 300 行。导出面板的顶部会明确写出这一点,例如
(应用了过滤条件:status = 'published',共约 12,480 行)。
导出面板
| # | 区域 | 说明 |
|---|---|---|
| 1 | 源信息 | 明确写出导的是哪张表、有没有过滤条件、大约多少行。这里的信息是防止「以为导了全表结果只导了一部分」的关键。 |
| 2 | 格式 | 三选一:CSV / JSON / SQL INSERT。切换会换掉下面的选项区。 |
| 3 | 格式选项 | 见下方「三种格式各自的选项」。 |
| 4 | 选项说明 | 灰色小字解释每个选项,不用去查文档。 |
| 5 | 后台导出 | 勾上后导出在后台跑,状态栏显示进度,你可以切到别的标签继续工作;完成后给一个轻提示,附「在 Finder 中显示」按钮。 |
| 6 | 保存路径 | 默认落在 ~/Downloads,文件名按表名自动取。点「选择…」改路径。 |
| 7 | 导出按钮 | 开始导出。导出过程中按钮变成「取消」,随时可以停。 |
三种格式各自的选项
导出过程中
- 导出在后台进行,大表导出时可以在其他标签继续工作。
- 状态栏显示进度:
正在导出… 已写入 129,480 行(24.1 MB)。 - 可以随时取消;取消后已写入的部分会保留,并提示这是不完整的文件。
- 完成后通知:
导出完成:129,480 行 → ~/Downloads/articles.csv。
导出出错时
| 情况 | 提示 |
|---|---|
| 导出途中连接断开 | 「导出中断,文件不完整」,保留已写内容 |
| 目标文件不可写 | 提示具体原因(权限、磁盘空间、路径不存在) |
| 目标文件已存在 | 询问是否覆盖 |
CSV 导入
入口有两个:菜单「文件 → 导入 CSV…」(⇧⌘I),或者对象树右键表 → 导入 CSV…。整个流程分三步。
第一步:选文件与解析选项
- 编码默认自动检测;检测失败时提示手动选择。
- 分隔符无法确定时提示手动选择。
- 预览表格是这一步的重点——解析错了要在这里发现,别等到导完几千行才发现列错位。
第二步:列映射
- 按列名自动匹配;匹配不上的默认选「跳过」,可以手动指定。
- 每个下拉里列出目标表的所有列,并显示该列的类型与是否必填。
- 「跳过」的列不参与插入。
- 如果目标列不可为空但没有映射,导入前就给出警告。
- 在事务中导入默认勾选。去掉勾选会变成逐行提交——中间失败时前面导入的行会留下来。
第三步:执行
导入的行为规则
| 项 | 行为 |
|---|---|
| 进度 | 实时显示已写入行数,可以取消 |
| 勾选「在事务中导入」 | 要么全部成功,要么全部回滚 |
| 不勾选 | 逐行提交,中间失败时前面导入的行会留下来(部分成功) |
| 取消导入 | 事务模式:回滚;非事务模式:保留已导入的行并明确提示 |
| 有失败行 | 导入结束后列出前 100 条失败原因,可导出为 CSV 以便修正后重试 |
| 导入完成 | 自动刷新对应表的标签 |
从 CSV 新建表
如果目标表还不存在,可以在入口处选「导入到新表」。这时第二步会变成推断列类型的界面。
- 读前 N 行推断列名与类型(文本 / 整数 / 小数 / 日期时间)。
- 推断结果可以在这一步逐列修改,类型下拉里可选常见类型。
- 提供一个「全部按文本类型创建」的快捷选项——能覆盖大多数情况,反正导进去以后再改类型也不难。
- 表名可编辑。
- 生成建表语句并在执行前展示出来,你确认了才执行。
- 只读连接下这个功能不可用。
明确不做
导入导出的边界
- Excel(
.xlsx)导入导出 - JSON 文件导入(只导出)
- SQL dump 文件导入——用
mysqldump/mysql命令行更合适 - 数据库备份 / 恢复
- 导入时的数据转换规则(大小写转换、截断长度、正则替换之类)
需要清洗数据的话,导成 CSV 用脚本处理完再导回来。