我正在尝试使用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'));


这是我的薪金.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

不知道我在哪里失踪。

提前致谢。

最佳答案

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

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

关于mysql - 加载文件mysql问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40925523/

10-09 22:17
查看更多