我正在尝试使用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
不确定我错过的地方。
提前致谢。
答案 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