2016-12-02 40 views
0

我試圖加載使用上MariaDB的問題與MySQL的的LoadFile

這裏的loadFile一個CSV文件是我的loadFile

LOAD DATA INFILE '/usr/src/salary.TXT' INTO TABLE salary 
    FIELDS TERMINATED BY ',' 
    LINES TERMINATED BY '\n'  
    (`EmpID`,@CHK_DATE,`CATEGORY`,`BASE`,`AMOUNT`) 
    SET CHK_DATE=IF (@CHK_DATE='',null,STR_TO_DATE(@CHK_DATE, '%m-%d-%Y')); 

這是我salary.TXT文件的外觀

EMP99 ,02-20-2016,Direct Deposit   ,    , 721.77 
EMP99 ,02-20-2016,Union Dues    ,  1092.06,  43.68 
EMP99 ,02-20-2016,Labor Mgmt Coop Comm Fund,  39.50,  1.98 
EMP99 ,02-27-2016,Direct Deposit   ,    , 568.91 

它正在加載,但所有CHK_DATE即將到來0000-00-00

不是確定我失蹤的地方。

在此先感謝。

+0

當我試圖MySQL的它加載罰款,內運行它,當我嘗試通過shell中運行它script everything everything comes 0000-00-0 – meso

+0

should not然後告訴我們你是如何通過shell腳本運行它? – e4c5

+0

請提供'SHOW CREATE TABLE'。 –

回答

0

就MySQL而言,這不是一個有效的日期,通常您需要使用ISO YYYY-MM-DD格式來避免含糊不清。您可能需要將此加載到一個臨時表中,然後將其轉換到受影響的列上使用STR_TO_DATE()您的最終架構:

INSERT INTO salary 
    SELECT ..., STR_TO_DATE(source_date, '%m-%d-%Y'), ... 
    FROM salary_import 
+0

使用@variable是避免需要tmp表的完美有效方法。因爲我沒有看到中觀的嘗試有什麼問題;塔德曼的建議是另一種選擇。 –