mysql导入文件的时候很容易出现”Data truncated for column ‘xxx’ at row x”,其中字符串里的xxx和x是指具体的列和行数.
有时候,这是因为数据类型的不对应,或者字符串长度不够而造成的.
但是,经常出现row 1就报错,并且感觉它没什么不对的样子.
这往往是因为windows的回车换行”\r\n”作怪,下面的测试说明了这种情况.
我有一个train.csv的数据文件,我用python修改后保存为c.csv.
但是,我用相同的命令把它们导入到mysql时,train能导入,c却出错.
我把行结束符从”\n”换成”\r\n”后,导入成功.
用notepad打开这两个文件,会发现train根本没有换行,而c则有换行.
这说明train里只有”\n”,因此notepad无法识别到换行,而c里则是”\r\n”.
然而用python生成c.csv的时候,输出只有”\n”,这说明python在win下会自动把”\n”变成”\r\n”.
还有一点是,除了notepad外的大部分win下的编辑器,都既能识别”\n”又能识别”\r\n”.
因此只有用notepad才能知道到底是”\n”还是”\r\n”,或者用winHex等工具直接看ascii码.
最后的结论是,注意这个数据文件的换行到底是”\n”还是”\r\n”.
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/113289.html原文链接:https://javaforall.cn