Navicat导入CSV时换行符被截断的根源在于未启用双引号文本限定符且字段未规范包裹,需在高级选项中勾选并设为英文双引号,同时确保字段分隔符、行尾符与文件一致,并使用TEXT等支持长文本的字段类型。

Navicat 导入 CSV 时换行符被截断的典型表现
直接拖入含 \n 或 \r\n 的 CSV 文件后,多行文本字段(如备注、日志、JSON 字符串)在 Navicat 表中只显示第一行,后续内容丢失或错位到下一行——这不是数据损坏,而是 Navicat 默认按“每行一条记录”解析,未识别字段内换行需用引号包裹。
必须启用“文本限定符”并设为双引号
Navicat 不会自动检测 CSV 中的引号包裹逻辑。若你的多行字段已用双引号包围(例如 "这是一段\n包含换行的文本"),导入前必须手动开启该选项,否则它把换行当作记录分隔符处理:
- 导入向导 → “高级”选项卡 → 勾选
文本限定符 - 下拉选择
"(英文双引号),不是单引号或中文引号 - 确保原始 CSV 中所有含换行、逗号、双引号的字段都严格用双引号包裹;单个字段内出现双引号需转义为两个双引号(
"")
字段分隔符和行尾符要与文件实际一致
Windows 生成的 CSV 多用 \r\n,macOS/Linux 多用 \n。Navicat 若设错会导致最后一列错位或空行:
- 在“高级”选项卡中,确认
字段分隔符是,(逗号),不是;或\t -
行尾符选CRLF (\r\n)或LF (\n)—— 可用 VS Code 或 Notepad++ 查看文件实际编码和换行符类型 - 如果不确定,先用
LF (\n)尝试;失败再换CRLF;仍不行就用文本编辑器另存为 UTF-8 + LF 格式
MySQL / PostgreSQL 导入后仍显示异常?检查目标字段类型
即使导入成功,若目标列是 VARCHAR(255) 且内容超长,或用了 TINYTEXT,换行符可能被截断或存储为空格:
- 确认目标表字段类型为
TEXT、MEDIUMTEXT或JSON(对 JSON 字段) - PostgreSQL 注意是否用了
CHAR(n)—— 它会右补空格并可能截断换行后的字符 - 导入完成后,执行
SELECT LENGTH(column_name), column_name FROM table LIMIT 1验证长度是否匹配原始文本字节数
\r\n 和 \n,或者导出时没强制启用“始终用引号包裹文本字段”选项。


















