我创建下表并将FLOAT的默认值设置为NULL,因为我想在表中将缺省float值存储为NULL。但问题是,我在表中将default设置为NULL后,所有customerReviewAverage值都变为NULL。 以下是我创建表格和加载数据的代码。当使用默认NULL时,MySQL浮点值全部变为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)
你在哪里设置'@ customerReviewAverage'? –
这是一个错误。谢谢。 –
这样的问题提醒了我为什么要将数据加载到所有列都是字符串的登台表中,然后在SQL中进行类型转换。 –