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_timeEvent_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 向导的步骤中添加带有手动转义撇号的数据?

如何在MySql Workbench中查看模型的所有现有元素?

使用 Workbench 迁移向导通过 ssh 将 MS SQL Server 数据库迁移到 MySQL