Navicat计划任务导出CSV/文本文件默认不包含列标题,因Include column headers选项默认关闭且不继承手动设置;必须在任务编辑的“导出选项”页手动勾选,并选择UTF-8 with BOM编码以确保Excel正确识别标题行。

Navicat计划任务导出的CSV/文本文件没有列标题,不是任务配置漏了步骤,而是导出向导里那个Include column headers选项根本没被启用——它默认关闭,且在计划任务中不会继承手动导出时的偏好设置。
导出向导里“带列标题”必须手动勾选
Navicat 的计划任务调用的是导出向导的底层逻辑,但所有选项都需在创建任务时显式设定。即使你日常手动导出时习惯勾选,计划任务也不会自动记住。尤其当任务是通过“新建批处理作业”或“导出为文本文件”方式创建时,Include column headers默认为未勾选状态。
- 打开计划任务编辑界面 → 进入“导出向导”步骤 → 找到“Options”页签(中文版叫“导出选项”)
- 务必手动勾选
Include column headers(英文界面)或“导出列标题”(中文界面) - 该选项只对当前导出格式生效:若你选的是
Text File,它控制CSV首行是否为字段名;若选Excel,它控制第一行是否为表头 - 不勾选时,哪怕查询结果本身有字段名,导出文件第一行仍是数据,后续脚本解析会直接错位
SQL 查询未保存 → 导出源丢失元信息
计划任务执行的是“已保存的查询”,如果导出动作基于一个未保存的查询结果(比如直接执行SELECT * FROM orders后点导出),Navicat 无法可靠提取字段名,即使勾选了列标题,也可能输出空标题行或全为expression。
- 务必先在查询窗口中写好语句,右键标签页 →
Save Query,并命名(如export_orders_daily) - 计划任务中选择“Export saved Query”,而非“Export query result”
- 字段别名要明确:
SELECT id AS order_id, created_at AS order_time比SELECT id, created_at更稳妥,避免某些驱动返回模糊列名
UTF-8 without BOM 编码导致 Excel 误判首行为数据
即使文件实际含列标题,Windows 下用 Excel 直接双击打开时,若导出编码选了UTF-8(无BOM),Excel 会按 ANSI 解析,可能把第一行字段名识别为乱码,进而跳过、忽略或错当数据处理——看起来像“没标题”,其实是被隐藏或误读了。
- 在导出向导“Options”页,编码必须选
UTF-8 with BOM(不是UTF-8,也不是GBK) - 该设置影响标题行能否被 Excel 正确识别,不影响内容本身是否包含标题
- 验证方法:用 VS Code 或 Notepad++ 打开导出文件,看第一行是否清晰显示字段名;再用 Excel 双击打开确认是否正常显示
最易被忽略的一点:计划任务里的“导出选项”是独立于主界面设置的,每次新建任务都得重设Include column headers和UTF-8 with BOM,不能指望全局默认。


















