MySQL Workbench - 表数据导入向导将所有日期时间对象写入 0000-00-00 00:00:00
Posted
技术标签:
【中文标题】MySQL Workbench - 表数据导入向导将所有日期时间对象写入 0000-00-00 00:00:00【英文标题】:MySQL Workbench - Table Data Import Wizard writing all datetime objects as 0000-00-00 00:00:00 【发布时间】:2020-10-07 22:21:10 【问题描述】:我在 MariaDB ('10.1.37-MariaDB'
) 服务器上使用 mysql Workbench 8.0。
我正在尝试使用 表格数据导入向导 将 3 个示例值导入表格。以下是 CSV 的示例:
emp_id,Event,Event_start_time,Event_end_time,
example,shift,"2020/11/6 0:00:00","6/11/2020 23:59",
example,lunch,"2020/14/06 13:00:00","2020/14/06 13:30:00",
example,break,"2020/14/06 10:10:00","2020/14/06 10:30:00",
在导入期间,每个值都正确显示,除了日期时间字段(Event_start_time
、Event_end_time
),它们在运行select
语句后显示为'0000-00-00 00:00:00'
。
我尝试了以下格式,但似乎都不起作用:
"2020/11/6 0:00:00"
2020/11/6 0:00:00
2020/11/06 00:00:00
2020-11-06 00:00:00
以下案例成功:
2020-11-06 0:00
但我需要能够为业务逻辑添加秒数。
更糟糕的是,当我使用同一向导将表(具有现有日期时间值)导出到 .csv
,然后尝试重新导入时,所有值都加载为 '0000-00-00 00:00:00'
。在为其他人开发解决方案时,我想尽可能减少/避免 MySQL 脚本。我做错了什么?
【问题讨论】:
你试过用-
替换/
吗?
请注意,您的某个日期完全搞砸了:6/11/2020
。
好的,下面两个案例没有返回正确答案,但是上面的一个 (2020-11-06 0:00) 有。案例中的唯一区别是包含秒数。有什么方法可以让我在不返回空白值的情况下包含秒数?
LOCALE 设置是什么?
en_US 是语言环境
【参考方案1】:
您的日期似乎是YYYY/DD/MM HH:MI:SS
格式,从 MySQL 的角度来看这是无效的。您需要将它们转换为 YYYY-MM-DD HH:MI:SS
格式,以便数据库能够正确识别它们。
如果您将数据保存在 CSV 文件中,一个简单的选项是带有输入预处理的 LOAD DATA INFILE
syntax。根据您显示的示例数据,这应该如下所示:
load data infile 'myfile.csv'
into mytable (emp_id, event, @event_start_time, @event_end_time)
fields terminated by ',' optionally enclosed by '"'
ignore 1 lines
set
event_start_time = str_to_date(@event_start_time, '%Y/%d/%m %H:%i:%s'),
event_end_time = str_to_date(@event_end_time, '%Y/%d/%m %H:%i:%s')
您可能需要根据您的实际使用情况调整语句选项 - 可能还有目标日期格式。
【讨论】:
【参考方案2】:我写错了值。
2020-11-06 0:00:00 (Y-M-D)
是正确。
2020-14-06 0:00:00 (Y-D-M)
不正确。
【讨论】:
以上是关于MySQL Workbench - 表数据导入向导将所有日期时间对象写入 0000-00-00 00:00:00的主要内容,如果未能解决你的问题,请参考以下文章
MySQL Workbench - 表数据导入向导将所有日期时间对象写入 0000-00-00 00:00:00
MySQL Workbench 数据导入向导未显示 CSV 中的所有列
您如何解决以下错误?我正在尝试使用数据表导入向导将 csv 文件加载到 Workbench
SQL Server 到 Mysql 的迁移(使用 Mysql Workbench)。如何在 Workbench 向导的步骤中添加带有手动转义撇号的数据?