Error number: 4143; Symbol: ER_BULK_PARSER_MISSING_ENCLOSED_BY; SQLSTATE: HY000
Message: Missing ENCLOSED BY character at row %ld in file ‘%s’. Add OPTIONALLY to the ENCLOSED BY clause to allow this input.
错误说明:
ER_BULK_PARSER_MISSING_ENCLOSED_BY错误提示MySQL没有找到用于包围值的双引号或者单引号。当批量导入数据时,CHAR或VARCHAR数据类型的列必须用双引号或单引号括起来,而使用MySQL的LOAD DATA LOCAL INFILE操作语句实现批量导入数据时,就出现该错误,MySQL不能正确得知值的边界,也就无法得知值的开头和结尾。
在使用LOAD DATA INFILE语句时,某一个参数没有正确添加括号或者是拼写错误,从而导致MySQL报 ER_BULK_PARSER_MISSING_ENCLOSED_BY错误。下面是一个不正确的例子:
LOAD DATA LOCAL INFILE ‘/path/foo-cvs.csv’
INTO TABLE foo
FIELDS TERMINATED BY ‘,’
ENCLOSED BY;
解决方案:
1.检查本地数据文件,确保它中包含了所有期望的双引号或单引号;
2.检查MySQL LOAD DATA INFILE语句,确保ENCLOSED BY参数被正确的指定为双引号或单引号,如下所示:
LOAD DATA LOCAL INFILE ‘/path/foo-cvs.csv’
INTO TABLE foo
FIELDS TERMINATED BY ‘,’
ENCLOSED BY ‘”‘;
3.尝试替换双引号和单引号,如果仍然出现 ER_BULK_PARSER_MISSING_ENCLOSED_BY错误,尝试删除ENCLOSED BY 参数,以确定是否可以正确导入数据;
4.确保 MySQL 服务器的字符集和数据文件是一致的,防止字符乱码;
5.更改数据文件中双引号为单引号或修改表中字段类型,如果可以正确导入数据,意味着数据文件,MySQL版本或者字符集有问题。在这种情况下需要将具体的数据文件,MySQL版本和字符集信息提供给MySQL支持人员,好更深入的解决问题。