Есть ли инструмент командной строки для преобразования базы данных MySQL в PostgreSQL? Я также хотел бы знать, есть ли способ конвертировать базу данных с помощью обычной mysqldump
команды.
Есть ли инструмент командной строки для преобразования базы данных MySQL в PostgreSQL? Я также хотел бы знать, есть ли способ конвертировать базу данных с помощью обычной mysqldump
команды.
Ответы:
ты пробовала:
mysqldump --compatible=postgresql dbname > export.sql
затем сделайте это, чтобы избежать кавычек
sed "s/\\\'/\'\'/g" export.sql > export1.sql
может потребоваться больше массажа, так что посмотрите на mysqldump doco более внимательно.
mysqldump
еще не исправлен . syntax error at or near "(" LINE 2: "id" int(10) NOT NULL,
--compatible
являетсяansi
Вот несколько инструментов с открытым исходным кодом, которые могут быть очень полезны:
FromMySqlToPostgreSql
- это инструмент с широкими возможностями и очень простой в использовании.
Он отображает типы данных, переносит ограничения, индексы, PK и FK точно так, как они были в вашей базе данных MySQL.
Под капотом используется PostgreSQL COPY, поэтому передача данных происходит очень быстро.
FromMySqlToPostgreSql написано на PHP (> = 5.4).
pgloader - это инструмент загрузки данных для PostgreSQL, использующий команду COPY. Его главное преимущество перед использованием
COPY
или \copy
Более того, использование внешнего упаковщика данных - это поведение транзакции, при котором pgloader будет хранить отдельный файл отклоненных данных, но продолжит пытаться скопировать хорошие данные в вашу базу данных. Поведение PostgreSQL по умолчанию является транзакционным, что означает, что любая ошибочная строка во входных данных (файл или удаленная база данных) остановит всю массовую загрузку таблицы. pgloader также реализует переформатирование данных, типичным примером этого является преобразование MySQL datetamps 0000-00-00 и 0000-00-00 00:00:00 в PostgreSQLNULL
значение (потому что в нашем календаре никогда не было нулевого года).
На самом деле существует бесплатный инструмент миграции, который довольно прост в использовании, разработанный самими EnterpriseDB. Его можно установить через StackBuilder: Migration Toolkit
Недавно я использовал несвободный инструмент DBConvert для преобразования базы данных доступа в postgres и обнаружил, что он стоит денег по сравнению с тем количеством времени, которое я потратил, пытаясь сделать это надежно бесплатно. Продайте аналогичный инструмент для MySQL <-> postgres , который я не использовал, но, возможно, стоит подумать, если вас не интересуют только инструменты командной строки.
Если вам интересно, я никак не связан с ними :-)
Например, вы можете использовать мастер миграции EnterpriseDB.
Это может облегчить миграцию OracleDB. Но для Mysql у него есть некоторые ограничения, например, он не поддерживает представления, триггеры, хранимые процедуры.
Для получения дополнительной информации см. EDB Migration Toolkit . Не уверен, но можно выполнить миграцию mysql-> oracle-> postgresql, сохранив ваши хранимые процедуры (если они существуют).
Grep this: база данных и инструменты миграции SQL
Это просто добавить к существующим ответам, которые помогли мне найти это решение. Я использовал FromMySqlToPostgreSql . Все, что вам нужно сделать, это загрузить и извлечь FromMySqlToPostgreSql , сделать копию образца файла конфигурации, установить в нем значения соединения db и запустить файл индекса с помощью следующей команды:
php index.php config.xml
Простой, но эффективный!
Существует инструмент с открытым исходным кодом, который предоставляет функции для преобразования базы данных MySQL в базу данных Postgresql, включая индексы, fks и данные.
https://github.com/ggarri/mysql2psql
Этот инструмент также позволяет определять изменения схемы, чтобы вы могли выполнить некоторые обновления вашей текущей схемы во время выполнения.