Значения NULL не вставляются в таблицу sql - PullRequest
2 голосов
/ 27 мая 2020

У меня есть файл CSV с тремя столбцами: «movieId», «imdbId», «tmdbId». Столбец «tmdbId» содержит несколько пустых строк. (MovieId - это внешний ключ, относящийся к первичному ключу в другой таблице)

Когда я читаю этот фрейм данных в R, пустые строки обрабатываются как значения NA. Если я импортирую этот CSV-файл в mysql DB с помощью следующей команды, строки со значениями NA не будут вставлены в таблицу, даже если я разрешаю значения NULL. Я также должен упомянуть, что у меня нет никаких ошибок.

Помимо следующей команды, я также пытался импортировать набор данных с помощью MySQL workbench, но это не сработало.

любое предложение ?

LOAD DATA LOCAL INFILE 'links.csv' INTO TABLE links
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(movieId, imdbId, tmdbId);

Я знаю, что значения NULL и NA не совпадают, но я не понимаю, почему R обрабатывает пустые строки как NA. Я попытался заменить NA на NULL, но R не поддерживает эту операцию.

ТАБЛИЦА

CREATE TABLE links ( 
    movieId int NOT NULL, 
    imdbId int DEFAULT NULL, 
    tmdbId int DEFAULT NULL, 
    KEY movieId (movieId), 
    CONSTRAINT links_ibfk_1 FOREIGN KEY (movieId) REFERENCES movieId_title (movieId) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

Файл CSV выглядит так: введите здесь описание изображения

Вот пример пустой строки для третьего столбца: введите описание изображения здесь

1 Ответ

2 голосов
/ 28 мая 2020

Как предлагает @ Ale c, вы можете сделать set foreign_key_checks = 0. Затем вы можете заменить нули на NULL, используя следующую команду:

UPDATE table_name
SET col_name= NULL 
WHERE  col_name  = 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...