Loadfile mysql的问题

时间:2016-12-02 05:40:59

标签: mysql mariadb

我正在尝试使用mariadb上的loadfile加载CSV文件

这是我的装载文件

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

的形式出现

不确定我错过的地方。

提前致谢。

1 个答案:

答案 0 :(得分:0)

就MySQL而言,这不是一个有效的日期,通常你需要使用ISO YYYY-MM-DD格式来避免歧义。您可能需要将其加载到临时表中,然后使用受影响列上的STR_TO_DATE()将其转换为最终模式:

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