gpt4 book ai didi

mysql - 添加created_at和updated_at到LOAD DATA INFILE数据

转载 作者:行者123 更新时间:2023-11-29 20:15:57 24 4
gpt4 key购买 nike

我有一个表格,计划从 CSV 文件填充该表格。文件包含 22 列,表包含 24 列。区别在于列列表末尾的 created_atupdated_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_atupdated_at 值。如果记录被替换,updated_at 值应该被替换吗?

可能吗?我使用的是 MariaDB 10.0.26,这两个日期始终使用 0000-00-00 00:00:00 的值创建。

最佳答案

也许... Changelog for 10.0.1跳到“MDEV-452”,其中显示:

  • MDEV-452 添加对自动初始化/更新时间戳和日期时间的全面支持
  • 对自动更新和/或自动初始化时间戳和日期时间列的普遍支持。此补丁是 MySQL 的“WL#5874:CURRENT_TIMESTAMP 作为 DATETIME 列的默认值”的重新实现。为了便于将来的合并,此实现重用了 MySQL 补丁中的少数函数和变量名称,但实现方式却截然不同。
  • TODO:此补丁中唯一 Unresolved 问题是在缺少列或 NULL 列的情况下 TIMESTAMP 和 DATETIME 列的 LOAD DATA 的语义。我无法完全理解 MySQL 行为背后的逻辑及其与他们自己的文档的关系,因此我让结果与所有其他 LOAD 案例更加一致。
  • 可以通过运行测试文件function_defaults并观察测试用例差异来发现有问题的测试用例。这些是故意留下来供讨论的。

如果您认为 MariaDB 仍然存在问题,请在那里提交错误。

关于mysql - 添加created_at和updated_at到LOAD DATA INFILE数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39777894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com