添加 created_at 和 updated_at 到 LOAD DATA INFILE 数据
Adding created_at and updated_at to LOAD DATA INFILE data
我有一个 table 计划从 CSV 文件中填充。该文件包含 22 列,而 table 包含 24 列。区别在于列列表末尾的 created_at
和 updated_at
字段。
我真正想要的是创建每条记录并默认最后两列。
我这样添加了列:
ALTER TABLE mytable
ADD created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
ADD updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
;
我的加载程序脚本如下所示:
LOAD DATA LOCAL INFILE '/tmp/my.csv'
REPLACE INTO TABLE mytable
CHARACTER SET utf8
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
IGNORE 1 LINES
;
当然,我希望在插入新记录时设置 created_at
和 updated_at
值。如果记录被替换,updated_at
值应该被替换?
可能吗?我正在使用 MariaDB 10.0.26 并且两个日期总是使用 0000-00-00 00:00:00
.
的值创建
也许……
Changelog for 10.0.1
跳到 "MDEV-452",上面写着:
- MDEV-452 添加对 auto-initialized/updated 时间戳和日期时间
的完全支持
- 对自动更新and/or 自动初始化时间戳和日期时间列的普遍支持。此补丁是 MySQL 的 "WL#5874: CURRENT_TIMESTAMP as DEFAULT for DATETIME columns" 的重新实现。为了简化未来的合并,此实现重用了 MySQL 补丁中的一些函数和变量名称,但实现方式却大不相同。
- TODO:此补丁中唯一未解决的问题是在缺少列或 NULL 列的情况下 TIMESTAMP 和 DATETIME 列的 LOAD DATA 语义。我无法完全理解 MySQL 行为背后的逻辑及其与他们自己的文档的关系,因此我保留了与所有其他 LOAD 案例更加一致的结果。
- 有问题的测试用例可以通过运行测试文件function_defaults查看,观察测试用例的差异。那些是故意留下来讨论的。
如果您觉得 MariaDB 仍然存在问题,请在此处提交错误。
我有一个 table 计划从 CSV 文件中填充。该文件包含 22 列,而 table 包含 24 列。区别在于列列表末尾的 created_at
和 updated_at
字段。
我真正想要的是创建每条记录并默认最后两列。
我这样添加了列:
ALTER TABLE mytable
ADD created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
ADD updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
;
我的加载程序脚本如下所示:
LOAD DATA LOCAL INFILE '/tmp/my.csv'
REPLACE INTO TABLE mytable
CHARACTER SET utf8
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
IGNORE 1 LINES
;
当然,我希望在插入新记录时设置 created_at
和 updated_at
值。如果记录被替换,updated_at
值应该被替换?
可能吗?我正在使用 MariaDB 10.0.26 并且两个日期总是使用 0000-00-00 00:00:00
.
也许…… Changelog for 10.0.1 跳到 "MDEV-452",上面写着:
- MDEV-452 添加对 auto-initialized/updated 时间戳和日期时间 的完全支持
- 对自动更新and/or 自动初始化时间戳和日期时间列的普遍支持。此补丁是 MySQL 的 "WL#5874: CURRENT_TIMESTAMP as DEFAULT for DATETIME columns" 的重新实现。为了简化未来的合并,此实现重用了 MySQL 补丁中的一些函数和变量名称,但实现方式却大不相同。
- TODO:此补丁中唯一未解决的问题是在缺少列或 NULL 列的情况下 TIMESTAMP 和 DATETIME 列的 LOAD DATA 语义。我无法完全理解 MySQL 行为背后的逻辑及其与他们自己的文档的关系,因此我保留了与所有其他 LOAD 案例更加一致的结果。
- 有问题的测试用例可以通过运行测试文件function_defaults查看,观察测试用例的差异。那些是故意留下来讨论的。
如果您觉得 MariaDB 仍然存在问题,请在此处提交错误。