Чи є інструмент командного рядка для перетворення бази даних 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,
Ось кілька інструментів з відкритим кодом, які можуть бути дуже корисними:
FromMySqlToPostgreSql
- це інструмент, що охоплює особливості, і дуже простий у використанні.
Він відображає типи даних, мігрує обмеження, індекси, ПК та FK точно так, як вони були у вашому MySQL db.
Під кришкою він використовує PostgreSQL COPY, тому передача даних відбувається дуже швидко.
FromMySqlToPostgreSql написаний на PHP (> = 5.4).
pgloader - це інструмент завантаження даних для PostgreSQL, використовуючи команду COPY. Його головна перевага перед просто використанням
COPY
або \copy
, і понад використання іноземного пакувальника даних - це поведінка транзакцій, де pgloader зберігатиме окремий файл відхилених даних, але продовжує намагатися копіювати хороші дані у вашу базу даних. Поведінка PostgreSQL за замовчуванням є транзакційною, а це означає, що будь-яка помилкова лінія у вхідних даних (файл або віддалена база даних) зупинить усе масове навантаження для таблиці. pgloader також реалізує переформатування даних, типовим прикладом цього є перетворення даних MySQL дат 0000-00-00 та 0000-00-00 00:00:00 до PostgreSQLNULL
значення (тому що в нашому календарі ніколи не було нуля року).
Насправді існує безкоштовний інструмент міграції, який досить простий у використанні, розроблений самими EnterpriseDB. Його можна встановити за допомогою StackBuilder: Migration Toolkit
Нещодавно я використовував невільний інструмент від DBConvert для перетворення бази даних доступу до постгресів, і вважав, що це коштує грошей порівняно з кількістю часу, який я витрачав, намагаючись зробити це надійно безкоштовно. Продам аналогічний інструмент для MySQL <-> postgres , який я не використовував, але, можливо, варто розглянути, якщо вас не цікавлять лише інструменти командного рядка.
У випадку, якщо вам цікаво, я жодним чином не пов’язаний з ними :-)
Наприклад, ви можете використовувати майстер міграції EnterpriseDB.
Він може з силою мігрувати OracleDB. Але для Mysql він має деякі обмеження, наприклад, він не підтримує перегляди, тригери, збережені процедури.
Докладніше див . У посібнику з міграції EDB . Не впевнений, але можна мігрувати mysql-> oracle-> postgresql, зберігаючи збережені вами процедури (якщо вони існують).
Зігніть це: Інструменти міграції баз даних та SQL
Це лише для того, щоб додати до існуючих відповідей, які допомогли мені знайти це рішення. Я використав FromMySqlToPostgreSql . Все, що вам потрібно зробити, це завантажити та витягнути FromMySqlToPostgreSql , зробити копію зразкового конфігураційного файла, встановити в ньому значення db-з'єднання та запустити файл індексу за допомогою наступної команди:
php index.php config.xml
Простий, але ефективний!
Існує інструмент з відкритими джерелами, який надає функціональні можливості для перетворення DB MySQL в db Postgresql db, включаючи індекси, fks і дані.
https://github.com/ggarri/mysql2psql
Цей інструмент також дозволяє визначити зміни схеми, щоб ви могли виконати деякі оновлення вашої поточної схеми за час виконання.