读取txt格式文件出现1409 - 错误提示

Dim.txt为 txt 文本文件,分隔符为“ ” 文件格式如下

Var1    Var2    Var3  Var4    Var5      Var6    Var7    Var8    Var9    Var10    Var11
ZJTSPI    2020-10-30    10:00    1.4338    175    NaN    1    100.3    100.3    100.2    100.2
ZJTSPI    2020-10-30    11:00    1.4338    175    1.0877    15831    100.3    100.3    100.2    100.2    
ZJTSPI    2020-10-30    12:00    1.4338    175    NaN    1    100.3    100.3    100.2    100.2
ZJTSPI    2020-10-30    13:00    1.4338    175    1.0877    15831    100.3    100.3    100.2    100.2
ZJTSPI    2020-10-30    14:00    1.4338    175    NaN    1    100.3    100.3    100.2    100.2
ZJTSPI    2020-10-30    15:00    1.4338    175    1.0877    15831    100.3    100.3    100.2    100.2    


执行读取命令语句:

LOAD DATA INFILE '/ProgramData/MySQL/MySQL Server 5.7/Uploads/Dim.txt'
INTO TABLE Dim
FIELDS TERMINATED BY ''
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(var1,@var2,var3,var4,var5,@var6,var7,var8,var9,var10,var11)
SET var2=str_to_date(@var2,'%Y-%m-%d'),var6=if(@var6='NaN',0,@var6);

试了很多种方式都没有解决问题
错误提示为:

1409 - Can't load value from file with fixed size rows to variable
时间: 0.001s

希望论坛内的朋友帮助看看

如果字段以空字符串结尾,那么它们必须是固定大小的;必须有某种方法来确定字段之间的边界,如果没有终止符,那么它们几乎必须是固定大小的。

我注意到MySQL 5.5手册中说:

  • User variables cannot be used when loading data with fixed-row format because user variables do not have a display width.
  • 加载固定行格式的数据时不能使用用户变量,因为用户变量没有显示宽度。

它还(在页面的前面)说:

  • If the FIELDS TERMINATED BY and FIELDS ENCLOSED BY values are both empty (''), a fixed-row (nondelimited) format is used. With fixed-row format, no delimiters are used between fields (but you can still have a line terminator). Instead, column values are read and written using a field width wide enough to hold all values in the field. For TINYINT, SMALLINT, MEDIUMINT, INT, and BIGINT, the field widths are 4, 6, 8, 11, and 20, respectively, no matter what the declared display width is.
  • 如果以值结尾的字段和由值括起的字段均为空(“ ”),则使用固定行(非delimited)格式。对于固定行格式,字段之间不使用分隔符(但仍可以使用行终止符)。相反,使用足够宽的字段来读取和写入列值,以容纳字段中的所有值。对于TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT,无论声明的显示宽度是多少,字段宽度分别为4、6、8、11和20。

SET var2=str_to_date(@var2,'%Y-%m-%d'),var6=if(@var6='NaN',0,@var6)
改为
SET var2=str_to_date(@var2,'%Y-%m-%d'),var6=if(@var6='NaN',NULL,@var6)

问题已经解决无需回答了