我创建了下面的表,并将FLOAT的默认值设置为NULL,因为我希望在表中将缺少的浮点值存储为NULL。但问题是,在我将表中的default设置为NULL后,所有的customerReviewAverage值都变为NULL。下面是我用来创建表和加载数据的代码。
CREATE TABLE Products(sku INTEGER, name VARCHAR(255), description TEXT,
regularPrice FLOAT,
customerReviewAverage FLOAT default NULL );
LOAD DATA LOCAL INFILE 'product.csv'
INTO TABLE Products
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(sku, name, @description, regularPrice, @customerReviewAverage)
SET description = IF(@description='',NULL,@description);这是product.csv中的数据示例。
19658847,Glanzlichter - CD,,12.99,5.0
19658856,Glanzlichter - CD,,6.99,
19658865,Glanzlichter - CD,,8.99,
1965886,Beach Boys '69 - CASSETTE,,6.99,4.5后来我发现
(sku, name, @description, regularPrice, @customerReviewAverage)应修改为
(sku, name, @description, regularPrice, customerReviewAverage)发布于 2016-03-07 04:59:21
尝尝这个
(sku, name, @description, regularPrice, @customerReviewAverage)
SET
description = IF(@description='',NULL,@description),
customerReviewAverage = IF(@customerReviewAverage='',NULL,@customerReviewAverage);您的“缺失”值是CSV中的一个空文本。
因为你的mysql版本没有运行这个ok,你可以做一个单独的更新:
UPDATE Products SET customerReviewAverage = NULL WHERE customerReviewAverage = 0https://stackoverflow.com/questions/35832344
复制相似问题