MySQL执行LOAD DATA INFILE报错1261 如何限制读取行数或终止语句
解决方案
Error Code: 1261报错的触发原因是读取到的某一行字段数量和目标表的列数不匹配,本次问题是文件末尾的空行/不完整行被识别为了有效数据,对应解决方法如下:
具体解决方法
- 修正行终止符配置
你当前语句设置的是lines terminated by '\r',Windows系统下常规文本文件的换行符为\r\n,格式转换过程中很可能出现换行符不统一的问题,导致末尾空行被识别为有效数据行,优先把行终止符修改为\r\n测试。 - 直接限制读取行数
LOAD DATA INFILE原生支持LIMIT参数,如果你确认有效数据总共有541908行(报错提示的行号减1),直接在语句末尾添加LIMIT 541908即可跳过最后一行无效数据。 - 优化原CSV导入方案(无需转TXT)
原CSV里字符串包含逗号不需要特意转成TXT,只要添加OPTIONALLY ENCLOSED BY '"'参数,MySQL会自动识别被引号包裹的字符串内容,不会把字符串内部的逗号当做字段分隔符,稳定性比空格分隔更高,可避免字段内容含空格导致的拆分错误。
修正后语句示例
TXT文件导入版本
LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/e_commerce_data.txt' INTO TABLE invoice CHARACTER SET latin1 fields terminated by ' ' lines terminated by '\r\n' ignore 1 lines LIMIT 541908;
原CSV文件导入版本
LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/e_commerce_data.csv' INTO TABLE invoice CHARACTER SET latin1 fields terminated by ',' OPTIONALLY ENCLOSED BY '"' lines terminated by '\r\n' ignore 1 lines;
内容的提问来源于stack exchange,提问作者Derek Frank
相关产品推荐
相关产品推荐

