1.问题描述

用MySQL-Workbench导入csv文件的时候遇到错误提示:

打开日志文件发现MySQL-Workbench导入csv文件是用自带的python实现的,以及相应的错误调用栈:

追溯到函数sniff中发现sniff函数对入口参数sample进行试探性的探索,试图找到引号和分隔符:

没有找到才报错的,为了搞清楚为什么没找到,需要知道sample的内容,于是追溯到函数analyze_file:

可以看到,analyze_file函数将目标csv文件中的前两行作为采样数据喂给了sniff,于是打开目标csv文件看看前两行的内容:

可以看到第三行数据有问题,每一行的数据第一个单元格的内容应该是“先笔试后面试”,可是第三行不是,而且第二行的引号没有成对出现,怀疑csv文件第二行中的单元格中有换行符,用WPS打开目标csv文件发现果不其然:

WPS和excel软件在打开csv的时候,会将双引号中的换行符视为特殊符号,不会作为下一行数据的分界符,但是python使用open函数打开csv文件,用readline读取一行的时候是不会遵循这种约定的,所以出现了“Could not determine delimiter”的错误。

2.解决方案

(1)将第二行中的有换行符的单元格中的换行符删掉

(2)在第二行前插入一行假数据,保证假行中的单元格都没有换行符

更多推荐