Я пытаюсь восстановить БД с помощью сценария SQL, но мешают ограничения по внешнему ключу
Я беру базу данных MySQL и переносу ее в PostgreSQL.Так как синтаксис таблицы создания MySQL оказался совершенно другим, я взял другую базу данных PostgreSQL с той же схемой, но с другими данными, и восстановил только схему.Другими словами, у меня теперь есть база данных с таблицами, ограничениями, последовательностями и всем этим shnaz, но без данных внутри.
Итак, пришло время восстановить данные.Я беру резервную копию базы данных MySQL с phpMyAdmin (только данные) в качестве сценария SQL (pgAdmin, похоже, не принимает файлы zip или gzip по какой-то причине), и запускаю сценарий SQL.Теперь, когда проблемы начинают возникать, это естественно, я перехожу с MySQL на PostgreSQL, поэтому неизбежны синтаксические ошибки.
Но есть и другие проблемы, не связанные с синтаксисом, например:one:
ERROR: insert or update on table "_account" violates foreign key constraint "fk_1_account"
DETAIL: Key (accountid)=(2) is not present in table "_entity".
Итак, да, в принципе, существует внешнее ограничение, запрос пытается вставить данные в таблицу _account
, но соответствующие данные не были вставлены в таблицу _entity
еще.Как мне обойти это?Есть ли способ заставить pgAdmin3 / PostgreSQL отключить ВСЕ ограничения, вставить данные и затем снова включить ограничения?
С синтаксической ошибкой, с которой я столкнулся, была эта:
INSERT INTO _accounttype_seq (id) VALUES (11);
PostgreSQL-эквивалент этого оператора (если я прав) -
ALTER SEQUENCE _accounttype_seq INCREMENT BY 11;
Но немного пройти через весь сценарий и изменить все 200+ операторов вставки Sequence.Итак, мне здесь лень, но есть ли более простой способ разобраться с последовательностями?
Или, у вас, ребята, есть какие-то предложения по другому набору инструментов, чтобы сделать это проще?
Спасибо за ваше время, хорошего дня.