首页 > 解决方案 > NULL 值不会插入到 sql 表中

问题描述

我有一个 CSV 文件,其中包含“movieId”、“imdbId”、“tmdbId”三列。“tmdbId”列包含多个空行。(movieId 是引用另一个表中的主键的外键)

当我将此数据帧读入 R 时,空行被视为 NA 值。如果我使用以下命令将此 CSV 文件导入 mysql DB,即使我允许 NULL 值,具有 NA 值的行也不会插入到表中。我还应该提到,我没有收到任何错误。

除了以下命令,我还尝试使用 MySQL 工作台导入数据集,但没有成功。

有什么建议吗?

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。我尝试用 NULL 替换 NA,但 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 文件如下所示: 在此处输入图像描述

这是第三列的空行示例: 在此处输入图像描述

标签: mysqlsqldatabasecsv

解决方案


正如@Alec 建议的那样,您可以执行set foreign_key_checks = 0. 然后,您可以使用以下命令将零替换为 NULL:

UPDATE table_name
SET col_name= NULL 
WHERE  col_name  = 0;

推荐阅读