2016-03-06 64 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零。 –