2017-07-30 39 views
0

我有一個表與下面的架構導入NULL小數類型的MySql

+-------------+--------------+------+-----+---------+-------+ 
| Field  | Type   | Null | Key | Default | Extra | 
+-------------+--------------+------+-----+---------+-------+ 
| NDB_No  | char(5)  | NO | PRI | NULL |  | 
| FdGrp_Cd | char(4)  | NO | MUL | NULL |  | 
| Long_Desc | char(200) | NO |  | NULL |  | 
| Shrt_Desc | char(60)  | NO |  | NULL |  | 
| ComName  | char(100) | YES |  | NULL |  | 
| ManufacName | char(65)  | YES |  | NULL |  | 
| Survey  | char(1)  | YES |  | NULL |  | 
| Ref_desc | char(135) | YES |  | NULL |  | 
| Refuse  | decimal(2,0) | YES |  | NULL |  | 
| SciName  | char(65)  | YES |  | NULL |  | 
| N_Factor | decimal(4,2) | YES |  | NULL |  | 
| Pro_Factor | decimal(4,2) | YES |  | NULL |  | 
| Fat_Factor | decimal(4,2) | YES |  | NULL |  | 
| CHO_Factor | decimal(4,2) | YES |  | NULL |  | 
+-------------+--------------+------+-----+---------+-------+ 

當試圖導入此行

01002^0100^Butter, whipped, with salt^BUTTER,WHIPPED,W/ SALT^NULL^NULL^Y^NULL^0^NULL^6.38^NULL^NULL^NULL 

我遇到了一個錯誤

1366 Incorrect decimal value: 'NULL' for column 'Pro_Factor' 
1366 Incorrect decimal value: 'NULL' for column 'Fat_Factor' 
1366 Incorrect decimal value: 'NULL' for column 'CHO_Factor' 

而數據是以0.00

'01002', '0100', 'Butter, whipped, with salt', 'BUTTER,WHIPPED,W/ SALT', 'NULL', 'NULL', 'Y', 'NULL', '0', 'NULL', '6.38', '0.00', '0.00', '0.00' 

目前,我使用MySQLWorkbench從本地文件

LOAD DATA LOCAL INFILE 'FOOD_DES.txt' 
INTO TABLE usda_sr28.FOOD_DES 
FIELDS TERMINATED BY '^' 
LINES TERMINATED BY '\n'; 
+0

你如何導入數據?它是一種工具嗎?腳本?從你引用的錯誤消息,我猜NULL是作爲一個字符串'NULL'而不是NULL值導入。 – StormoPL

+0

我編輯後顯示正在使用的腳本 –

+0

嘗試用\ N替換源文件中的NULL,如下所示:https://dev.mysql.com/doc/refman/5.7/en/problems-with-null。 HTML – StormoPL

回答

0

導入數據如果您正在使用load data infile您可以使用set

load data infile . . . 
    (ndb_no, . . ., @pro, @fat, @cho, . . .) 
    set pro_factor = nullif(@pro, 'NULL'), 
     fat_factor = nullif(@fat, 'NULL'), 
     cho_factor = nullif(@cho, 'NULL') 

documentation有更多的細節。