Вы должны загрузить всю строку данных, а затем проанализировать ее с правильным преобразованием типов данных:
LOAD DATA INFILE 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\z1.rpt'
INTO TABLE myTable
IGNORE 2 ROWS /* skip header */
(@tmp) /* load whole line into vartiable */
SET /* then parse separate field values from the variable */
EffectiveDate = SUBSTRING(@tmp,1,23), /* datetime literal - get as-is */
family = SUBSTRING(@tmp,25,6), /* string data - get needed length */
Instrument = 0+SUBSTRING(@tmp,32,11), /* numeric data - convert from string implicitly */
Sedol = SUBSTRING(@tmp,44,8),
Name = SUBSTRING(@tmp,57,60),
ICB = 0+SUBSTRING(@tmp,118,12),
QZ = 0+SUBSTRING(@tmp,130,22),
VZ = 0+SUBSTRING(@tmp,153,22),
MZ = 0+SUBSTRING(@tmp,176,22),
SZ = 0+SUBSTRING(@tmp,199,22),
volZ = 0+SUBSTRING(@tmp,222,22),
LZ = 0+SUBSTRING(@tmp,245,22),
DYZ = 0+SUBSTRING(@tmp,268,22),
QS = 0+SUBSTRING(@tmp,291,22),
VS = 0+SUBSTRING(@tmp,314,22),
MS = 0+SUBSTRING(@tmp,337,22),
SS = 0+SUBSTRING(@tmp,360,22),
volS = 0+SUBSTRING(@tmp,383,22),
LS = 0+SUBSTRING(@tmp,406,22),
DYS = 0+SUBSTRING(@tmp,429,22),
priceO = 0+SUBSTRING(@tmp,452,22),
fxO = 0+SUBSTRING(@tmp,475,22),
/* shares=0+SUBSTRING(@tmp,498,22), */ /* field is absent in table structure - skipped */
capOUSD = 0+SUBSTRING(@tmp,521,22)
;
Исходные данные содержат поле shares
, которое отсутствует в структуре таблицы (закомментировано) ;
name
определяется как VARCHAR(100)
в структуре таблицы, тогда как его значение имеет только 60 символов в файле данных.
Каждый файл может иметь собственные длины полей, поэтому проверьте это перед импортом (и исправьте, если необходимо).