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

塞纳·海达里(Sena Heydari)

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

我经常收到的示例错误是: ERROR Database error 23502: null value in column "created_at" violates not-null constraint.

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

我已经考虑过修改源表,以使它们的日期像纪元时一样,但这充其量只是临时的,并且会基于MySQL表更改某些报告。

比尔·卡温

我想您已经知道您有两种选择:

  • 在导出数据之前,将MySQL数据更新为注册00:00:00或NULL的某个实际值。您不应该使用任何特殊值来代替NULL。

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

PostgreSQL中更换 “0000-00-00 00:00:00” 为NULL

Hibernate在时间'00:00:00'返回null

将时间设置为00:00:00

无法将'0000-00-00 00:00:00'转换为TIMESTAMP

获取异常,例如“无法将值'0000-00-00 00:00:00'从第12列转换为TIMESTAMP”

如何解析0000-00-00 00:00:00?

MySQL不正确的日期时间值:“ 0000-00-00 00:00:00”

mysql datetime在mysql版本5.6中变为0000-00-00 00:00:00

如何将字段的默认值设置为“ 0000-00-00 00:00:00”?

将chr“ 00:00:00”转换为日期时间“ 00:00:00”

如何将具有0000-00-00 00:00:00值的日期时间设置为NULL?

Mysql:将0000-00-00设置为null

将posixct时间格式转换为00:00:00

无法将DateTimeField的默认值设置为“ 0000-00-00 00:00:00”

MYSQL 5.7表3字段DATETIME'0000-00-00 00:00:00'如何将新结构更改为DEFAULT NULL

为什么将“ 0000:00:00 00:00:00”解析为日期返回-0001-11-28T00:00:00Z?

在Mysql数据库中将0000-00-00 00:00:00插入到DateTime

0000-00-00 00:00:00在时间戳

PHP:将时间字符串00:00:00替换为00:00

当DateTime设置为0000-00-00 00:00:00时,MySQL选择MIN DateTime

MySQL导入将时间戳的空值转换为0000-00-00 00:00:00

如何在python中使用strftime()格式化'0000-00-00 00:00:00'?

将下午 1:00:00 转换为 13:00:00

00:00(24:00)和23:00(23:00)的差异

MySQL - 如何选择日期时间字段不等于 0000-00-00 00:00:00 的行?

如何使用javascript获取当前时间为00/00/0000 00:00:00

如何将时间“0000-00-00 00:00:00”设置为LocalDateTime?

将 PHP DateTimeInterface 保存到 MySQL 结果为 0000-00-00 00:00:00

R:将日期/时间格式 0000-00-00T00:00:00Z 转换为 POSIXct