2015-09-22 3 views
0

Я мигрируют из MySQL в Postgres, используя mysqldump и psql и получаю эту ошибку:Импорт метки из MySQL в Postgres

ERROR: date/time field value out of range: "0000-00-00 00:00:00" at character 52 STATEMENT: INSERT INTO "cron" VALUES (1,'2015-07-11 05:21:40','0000-00-00 00:00:00',2,58,'updateBid','plus',NULL,NULL),(2,'2015-07-11 05:21:40','0000-00-00

В таблице MySQL выглядит

CREATE TABLE "cron" (
    "id" int(11) NOT NULL, 
    "execute_after" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    "executed_at" timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', 

Таблица Postgres выглядит это:

CREATE TABLE "cron" (
    "id" int NOT NULL, 
    "execute_after" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    "executed_at" timestamp, 

Как я могу автоматически импортировать это поле?

+1

Я полагаю, (из-за того, что 'executed_at' обнуляемым в Postgres, но не в MySQL), что вы хотите для таких нулевых значений, чтобы стать' NULL' в Postgres? Если это так, вы можете либо искать, либо заменять в файле '.sql'; или сначала обновить данные в MySQL перед экспортом (возможно, путем копирования данных во временную таблицу, если вы не хотите изменять оригинал). – eggyal

ответ

1

Хорошо я решил его с sed:

mysqldump --compress --compatible postgresql --no-create-info --compact dbname | sed $'s/\'0000-00-00 00:00:00\'/NULL/g' | psql dbname

Смежные вопросы