Error Code: 1366. Incorrect integer value: '' for column 'data1' at row 390.422 sec 用load data infile导入数据的时候出现这样的错误提示
现有一个数据如下:
用notepad++打开这个文件看一下
可以看到最后面有几个空行,只能用notepad++打开可以看到,直接双击文件打开看不到。
接下来我们创建一个表,然后导入这个数据
create database dd;
use dd;
create table biao2(
data1 int ,
name_of varchar(8) ,
linetype varchar(8) ,
start1 varchar(8) ,
end1 varchar(8),
number_of_worker int,
time_euse int,
total_of_goods int,
turnover_of_goods double,
goods varchar(8),
turnover double
);
show variables like '%secure%';
#'D:\\data_route_english.csv'
#'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\biao11.csv'
#用workbench导入
LOAD DATA INFILE 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\data_route_chinese.csv' #一般直接将文件放在Uploads文件夹里面
#为什么必须要将数据文件放在那个文件夹下呢,是因为我们的my.ini文件中有一个变量secure_file_priv,这个变量的值是C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\
#这个变量有三类可能取值,
#1.取值位null的时候表示 -- 限制mysqld 不允许导入导出
#2.取值位/tmp/的时候表示 -- 限制mysqld的导入导出只能发生在/tmp/目录下
#3.取值位' ' 的时候表示 -- 不对mysqld 的导入 导出做限制
#显然我们现在属于第二种情况,必须把文件放到那个文件夹下才能正确上传,而我们也是这样做的。
INTO TABLE biao2
FIELDS TERMINATED BY '\,'
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED by'\r\n'
ignore 1 lines;
select * from biao2;
然后就会出现错误提示
13:50:11LOAD DATA INFILE 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\data_route_chinese.csv' #一般直接将文件放在Uploads文件夹里面 INTO TABLE biao2 FIELDS TERMINATED BY '\,' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED by'\r\n' ignore 1 linesError Code: 1366. Incorrect integer value: '' for column 'data1' at row 39
0.000 sec
说39行有问题,因为我们跳过了第一行,所以原数据的第40行就是这里所说的39行,再一看,39行是个空行,没有值,问题就出现在这里。
以记事本方式打开my.ini文件,最好可以用Notepad++打开
修改为sql-mode="NO_ENGINE_SUBSTITUTION"
然后保存后关闭这个文件,再启动mysql服务。
重新启动work bench,删掉原有连接重新创建一个新的连接,如果无法启动,请参考我这个链接:https://www.pinggu.com/post/details/5f96381e91c8cb224686a66c
重新执行命令
发现可以成功导入空行了,只是有个提醒而已
及其需要注意的是:
1.修改my.ini文件之前需要将mysql服务彻底关闭,很多人这一步做的不到位。
2.修改my.ini文件之后保存然后关闭my.ini文件
3.重新启动mysql








暂无数据