gpt4 book ai didi

mysql - 使用 PGLoader 将 NULL 和 '0000-00-00 00:00:00' 转换为非 NULL MySQL 到 Postgres

转载 作者:行者123 更新时间:2023-11-29 03:18:35 25 4
gpt4 key购买 nike

当使用 pgloader 将表从 MySQL 移动到 Postgres 时,我遇到的一个问题是某些源 MySQL 表可以包含 NULL0000-00-00 00:00: datetime 字段中的 00 值,并且其中一些列的转换被证明是有问题的。

我经常遇到的一个错误示例是:错误数据库错误 23502:“created_at”列中的空值违反了非空约束。

鉴于该值需要为非空值,理想的 CAST 语句是什么?我使用过:--cast "type date drop not null drop default using zero-dates-to-null",如果我理解正确,它会转换为 NULL 值在 Postgres 中。是否有关键字可以转换为特定日期或非空值?也许更明智的方法?

我考虑过修改源表,使它们的日期类似于纪元时间,但这充其量只是临时的 hack,并且会根据 MySQL 表更改一些报告。

最佳答案

我想你已经知道你有两个选择:

  • 在导出数据之前,将 MySQL 数据更新为实际值 0000-00-00 00:00:00 或 NULL。您不应使用任何特殊值代替 NULL。

  • 在您的 PostgreSQL 数据库中允许 NULL,并将具有零日期时间值的数据导入为 NULL。

NULL 是表示缺失或不适用数据的合法方式。

关于mysql - 使用 PGLoader 将 NULL 和 '0000-00-00 00:00:00' 转换为非 NULL MySQL 到 Postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49636652/

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