MySQL LOAD DATA LOCAL INFILE遇字段含逗号导入失败求助
解决MySQL导入Nessus CSV时字段含逗号的拆分问题
你遇到的问题是典型的带引号CSV导入场景——默认的逗号分隔配置会把字段内部的逗号误判成分隔符,导致数据错位。好在MySQL的LOAD DATA INFILE专门支持处理这种标准CSV格式,只需要补充两个关键参数就能解决:
修改后的导入命令
system("mysql -uXXXX -pxxx --local-infile XXXX -e \"LOAD DATA LOCAL INFILE '/home/nessus.csv' INTO TABLE vulnerabilities FIELDS TERMINATED BY ',' ENCLOSED BY '\"' ESCAPED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES\"")
关键参数解释
ENCLOSED BY '"':告诉MySQL字段是被双引号包裹的,包裹范围内的逗号不会被当成字段分隔符。这正是解决你描述中"According to its banner,"被错误拆分的核心配置。ESCAPED BY '"':处理字段内部的双引号——标准CSV中如果字段本身包含双引号,会用两个连续双引号表示(比如"He said ""hello"" to me"),这个参数让MySQL把这种情况解析成单个双引号。- 保留你原来的
FIELDS TERMINATED BY ','和LINES TERMINATED BY '\r\n',因为这符合Nessus CSV的格式规范。
额外注意事项
- 确保你的MySQL客户端和服务器都开启了
local_infile选项(你已经在命令里加了--local-infile,如果还是报错,可以检查服务器端的local_infile参数是否为ON)。 - 确认CSV文件的编码和目标表的字符集一致(比如都是UTF-8),避免导入后出现乱码。
- 如果导入后还有个别字段错位,可以检查CSV文件是否有异常行(比如未正确闭合的双引号),Nessus导出的CSV一般格式规范,但偶尔可能有特殊情况。
内容的提问来源于stack exchange,提问作者enkiki
相关产品推荐
相关产品推荐

