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表中。的主要内容,如果未能解决你的问题,请参考以下文章
SQLAlchemy 将值插入到反射表中会导致所有的 NULL 条目
Python和SQL:用SQL的“Null”值替换DataFrame的空字符串,以将数据插入数据库中而不会出现格式错误[重复]