2016-03-06 107 views
0

我创建下表并将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) 
+1

你在哪里设置'@ customerReviewAverage'? –

+0

这是一个错误。谢谢。 –

+0

这样的问题提醒了我为什么要将数据加载到所有列都是字符串的登台表中,然后在SQL中进行类型转换。 –

回答

0

试试这个

(sku, name, @description, regularPrice, @customerReviewAverage) 
SET 
description = IF(@description='',NULL,@description), 
customerReviewAverage = IF(@customerReviewAverage='',NULL,@customerReviewAverage); 

你 “失踪” 的值在CSV空文本。

由于您mysql版本没有运行这个没关系,你可以做一个单独的更新:

UPDATE Products SET customerReviewAverage = NULL WHERE customerReviewAverage = 0 
+0

我已经试过这个,但它没有帮助。 –

+0

没有帮助如何?这些代码插入了什么? –

+0

缺少值becom零。 –

相关问题