当使用pgloader将表从MySQL移到Postgres时,我遇到的一个问题是某些源MySQL表可以在字段中包含NULL
或0000-00-00 00:00:00
值datetime
,并且其中某些列的转换被证明是有问题的。
我经常收到的示例错误是: 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"
,如果我理解正确的话,可以将其转换为NULL
Postgres中的值。是否有可转换为特定日期或非空值的关键字?也许更明智的方法?
我已经考虑过修改源表,以使它们的日期像纪元时一样,但这充其量只是临时的,并且会基于MySQL表更改某些报告。
我想您已经知道您有两种选择:
在导出数据之前,将MySQL数据更新为注册00:00:00或NULL的某个实际值。您不应该使用任何特殊值来代替NULL。
在PostgreSQL数据库中允许NULL,并将日期时间值为零的数据导入为NULL。
NULL是表示丢失或不适用数据的合法方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句