NULL值不会插入到sql表中。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NULL值不会插入到sql表中。相关的知识,希望对你有一定的参考价值。

我有一个CSV文件,有三列 "movieId"、"imdbId"、"tmdbId"。在 "tmdbId "这一列中包含了多条空行。(movieId是一个froeign键,指的是另一个表中的主键)

当我把这个数据框架读到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不支持这个操作。

TABLE

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文件是这样的。在这里输入图片描述

下面是第三列空行的例子。在这里输入图像描述

答案

正如@Alec所建议的那样,你可以这样做 set foreign_key_checks = 0. 然后,你可以使用下面的命令将0替换为NULL。

UPDATE table_name
SET col_name= NULL 
WHERE  col_name  = 0;

以上是关于NULL值不会插入到sql表中。的主要内容,如果未能解决你的问题,请参考以下文章

mysql default设置了默认值但插入依然为null

SQLAlchemy 将值插入到反射表中会导致所有的 NULL 条目

SQL NULL 值

Python和SQL:用SQL的“Null”值替换DataFrame的空字符串,以将数据插入数据库中而不会出现格式错误[重复]

SQL NULL 值

使用 PL/SQL 将值插入全局临时表