我正在尝试将csv数据文件加载到mysql中,稍后我需要传递给HDFS但是在更新文件时
mysql > load data infile '/var/lib/mysql-files/online_retail.csv' into table retail fields terminated by ',' ignore 1 lines;
错误:"日期值不正确:' 12/1/2010 8:26'对于专栏 ' invoicedate'在第1行"
mysql> DESCRIBE retail;
+-------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| InvoiceNo | int(11) | YES | | NULL | |
| stockcode | varchar(20) | YES | | NULL | |
| Description | varchar(500) | YES | | NULL | |
| Quantity | int(11) | YES | | NULL | |
| invoicedate | date | YES | | NULL | |
| UnitPrice | double | YES | | NULL | |
| CustomerId | int(11) | YES | | NULL | |
| Country | varchar(30) | YES | | NULL | |
+-------------+--------------+------+-----+---------+-------+
答案 0 :(得分:0)
正如所说的eggyal和Date and Time Literals所述:
MySQL以这些格式识别
DATE
值:
作为
'YYYY-MM-DD'
或'YY-MM-DD'
格式的字符串。允许使用“宽松”语法:任何标点符号都可以用作日期部分之间的分隔符。例如,'2012-12-31'
,'2012/12/31'
,'2012^12^31'
和'2012@12@31'
是等效的。作为没有
'YYYYMMDD'
或'YYMMDD'
格式的分隔符的字符串,前提是该字符串作为日期有意义。例如,'20070523'
和'070523'
被解释为'2007-05-23'
,但'071332'
是非法的(它具有无意义的月和日部分)并变为'0000-00-00'
。作为
YYYYMMDD
或YYMMDD
格式的数字,前提是该数字作为日期有意义。例如,19830905
和830905
被解释为'1983-09-05'
。
就你的具体情况而言,下面几行:
MySQL以这些格式识别DATETIME和TIMESTAMP值:
作为
'YYYY-MM-DD HH:MM:SS'
或'YY-MM-DD HH:MM:SS'
格式的字符串。这里也允许使用“宽松”语法:任何标点符号 字符可以用作日期部分或时间之间的分隔符 部分。例如,'2012-12-31 11:30:45'
,'2012^12^31 11+30+45'
,'2012/12/31 11*30*45'
和'2012@12@31 11^30^45'
相同。在日期和时间部分与小数秒部分之间识别的唯一分隔符是小数点。
日期和时间部分可以用T而不是空格分隔。例如,
'2012-12-31 11:30:45'
'2012-12-31T11:30:45'
是 等效。作为没有
'YYYYMMDDHHMMSS'
或'YYMMDDHHMMSS'
格式的分隔符的字符串,前提是该字符串作为日期有意义。 例如,'20070523091528'
和'070523091528'
被解释为'2007-05-23 09:15:28'
,但'071122129015'
是非法的(它有一个 无意义的分钟部分)并成为'0000-00-00 00:00:00'
。作为
YYYYMMDDHHMMSS
或YYMMDDHHMMSS
格式的数字,前提是该数字作为日期有意义。例如,19830905132800
和830905132800
被解释为'1983-09-05 13:28:00'
因此,您的表达式不是有效的MySQL,既不是日期也不是时间戳文字。为了符合上面详述的文字格式之一,您必须创建一个脚本,使您的时间数据符合DATETIME或TIMESTAMP格式,并可能更新您的数据库以更改invoicedate类型。
答案 1 :(得分:0)
如果您将数据类型指定为" DATE",日期格式应为" YYYY-MM-DD"或" YY-MM-DD"。 将数据类型设置为STRING,或将数据转换为YYYY-MM-DD格式......
从2010年1月12日8:26到2010/12/01 希望这有帮助