2016-12-02 42 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表的完美有效方法。因为我没有看到中观的尝试有什么问题;塔德曼的建议是另一种选择。 –