MySQL Workbench - Table 数据导入向导将所有日期时间对象写入 0000-00-00 00:00:00
MySQL Workbench - Table Data Import Wizard writing all datetime objects as 0000-00-00 00:00:00
我在 MariaDB ('10.1.37-MariaDB'
) 服务器上使用 MySQL Workbench 8.0。
我正在尝试使用 Table 数据导入向导 将 3 个示例值导入 table。以下是 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
),它在 运行 之后显示为 '0000-00-00 00:00:00'
a select
声明。
我尝试了以下格式,none 似乎有效:
"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
但我需要能够包含业务逻辑的秒数。
更糟糕的是,当我使用相同的向导将 table(具有现有日期时间值)导出到 .csv
,然后尝试重新导入时,所有值都加载为 '0000-00-00 00:00:00'
.由于我正在为其他人开发解决方案,我想 minimize/avoid MySQL 尽可能多地编写脚本。我做错了什么?
您的日期似乎是 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')
您可能需要调整报表选项 - 可能还有目标日期格式 - 以适应您的实际使用情况。
我写错了值。
2020-11-06 0:00:00 (Y-M-D)
正确。
2020-14-06 0:00:00 (Y-D-M)
不正确。
我在 MariaDB ('10.1.37-MariaDB'
) 服务器上使用 MySQL Workbench 8.0。
我正在尝试使用 Table 数据导入向导 将 3 个示例值导入 table。以下是 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
),它在 运行 之后显示为 '0000-00-00 00:00:00'
a select
声明。
我尝试了以下格式,none 似乎有效:
"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
但我需要能够包含业务逻辑的秒数。
更糟糕的是,当我使用相同的向导将 table(具有现有日期时间值)导出到 .csv
,然后尝试重新导入时,所有值都加载为 '0000-00-00 00:00:00'
.由于我正在为其他人开发解决方案,我想 minimize/avoid MySQL 尽可能多地编写脚本。我做错了什么?
您的日期似乎是 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')
您可能需要调整报表选项 - 可能还有目标日期格式 - 以适应您的实际使用情况。
我写错了值。
2020-11-06 0:00:00 (Y-M-D)
正确。
2020-14-06 0:00:00 (Y-D-M)
不正确。