将文件更新到mysql时出错

cu6pst1q  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(351)

我正在尝试将csv数据文件加载到mysql中,稍后我需要将其传递给hdfs,但同时更新文件

mysql > load data infile '/var/lib/mysql-files/online_retail.csv' into table retail fields terminated by ',' ignore 1 lines;

错误:“日期值不正确:第1行“invoicedate”列的“12/1/2010 8:26”

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    |       | 
+-------------+--------------+------+-----+---------+-------+
xfb7svmp

xfb7svmp1#

如果将数据类型指定为“日期”,则日期格式应为“yyy-mm-dd”或“yy-mm-dd”。要么将数据类型设置为字符串,要么将数据转换为yyyy-mm-dd格式。。。
i、 e从2010年12月1日8:26到2010年12月1日希望这有帮助

bihw5rsg

bihw5rsg2#

如eggyal所述,并记录在日期和时间文字中:
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类型。

相关问题