首页 > 解决方案 > 如何将“当前”mysql时间戳值迁移到postgreSQL

问题描述

我有 Mysql DB,其中包含带有字段的表“关税”

start_date DATETIME DEFAULT (current_timestamp() + interval 10 year),

当我尝试使用 pgloader 将数据库迁移到 postgreSQL 时出现错误

错误数据库错误0A000:不再支持日期时间的值“当前”查询:CRE ATE TABLE yamalkernel.tariff 2021-10-06T09:51:25.248000+03:00 FATAL 无法创建架构,见上文

我以这种方式运行 pgloader

$ pgloader 场景.load

$ cat 场景.load

LOAD DATABASE
FROM mysql://user:password@127.0.0.1/database1
INTO postgresql://postgres:postgres@127.0.0.1:5432/database2;

标签: mysqlpostgresqlpgloader

解决方案


您可以“告诉” pgLoader 转换“ ”表(在“ ”部分中)的问题字段(“ start_date”),例如如下:tariffCAST

#!/bin/bash

cat <<EOF > file.load
LOAD DATABASE
FROM mysql://user:password@127.0.0.1/database1
INTO postgresql://postgres:postgres@127.0.0.1:5432/database2
CAST column tariff.start_date to "timestamptz DEFAULT now() + interval '10 year'" drop default;
EOF

pgloader -v file.load

推荐阅读