Код ошибки: 1366. Неверное целочисленное значение: "# N / A" для столбца "Длина" в строке 21. - PullRequest
0 голосов
/ 29 мая 2020

В моем наборе данных есть много бессмысленных значений «# N / A». Я создаю новую таблицу и загружаю локальный CSV-файл в свою новую таблицу. Но из-за бессмысленного значения он показывает ошибку, как показано в заголовке. Как я могу успешно загрузить набор данных без бессмысленных значений?

Вот мой код:

CREATE TABLE movies (
    Yearnum INT NOT NULL,
    Length INT,
    Title VARCHAR(255) NOT NULL,
    Subjct VARCHAR(255) NOT NULL,
    Actor VARCHAR(255) NOT NULL,
    Actress VARCHAR(255) ,
    Director VARCHAR(255) ,
    Popularity VARCHAR(255),
    Awards VARCHAR(255) NOT NULL
);
LOAD DATA INFILE  'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/movies - movies.csv'
INTO TABLE movies
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

Вот мой URL-адрес ссылки набора данных: https://docs.google.com/spreadsheets/d/1J17LYPJZaW5QWQuQVJQonpJXGUbPGOJjg5bxj3SMupQ/edit?usp=sharing

1 Ответ

0 голосов
/ 29 мая 2020

Вы можете обойти это, используя список столбцов с переменными вместо столбцов, данные которых могут быть недопустимыми в файле CSV; значения столбцов можно затем сделать действительными с помощью предложения SET. Например:

LOAD DATA INFILE  'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/movies - movies.csv'
INTO TABLE movies
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(Yearnum, @length, Title, Subjct, Actor, Actress, Director, Popularity, Awards)
SET Length = CASE WHEN @length = '#N/A' THEN 0 ELSE @length END

Подробнее см. руководство .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...