Я пробовал перечисленные инструменты здесь, некоторые с большим успехом, чем другие, но никто не дал мне действительный синтаксис postgres, который я мог бы использовать (tinyint ошибки и т.д.)
Есть ли простой инструмент для преобразования mysql в синтаксис postgresql?
Ответ 1
Здесь есть опция mysqldump
, которая выводит код PostgreSQL:
mysqldump --compatible=postgresql ...
Ответ 2
Через некоторое время в Google я нашел этот пост.
- Установите mysql2psql с помощью
[sudo] gem install mysql2psql
. - Создайте файл конфигурации, запустив
mysql2psql
. Вы увидите ошибку, но должен быть создан файлmysql2psql.yml
. - Изменить
mysql2psql.yml
- Запустите
mysql2psql
снова, чтобы перенести данные.
Совет: установите force_truncate
в true
в конфигурационный файл mysql2psql.yml
, если вы хотите, чтобы база данных postgresql была очищена до миграции ваших данных.
Ответ 3
Я использовал py-mysql2pgsql. После установки ему нужен только простой файл конфигурации в формате yml (источник, пункт назначения), например:
# if a socket is specified we will use that
# if tcp is chosen you can use compression
mysql:
hostname: localhost
port: 3306
socket: /tmp/mysql.sock
username: mysql2psql
password:
database: mysql2psql_test
compress: false
destination:
# if file is given, output goes to file, else postgres
file:
postgres:
hostname: localhost
port: 5432
username: mysql2psql
password:
database: mysql2psql_test
Использование:
> py-mysql2pgsql -h
usage: py-mysql2pgsql [-h] [-v] [-f FILE]
Tool for migrating/converting data from mysql to postgresql.
optional arguments:
-h, --help show this help message and exit
-v, --verbose Show progress of data migration.
-f FILE, --file FILE Location of configuration file (default:
mysql2pgsql.yml). If none exists at that path,
one will be created for you.
Подробнее на домашней странице https://github.com/philipsoutham/py-mysql2pgsql.
Ответ 4
На этой странице postgresql есть одна часть программного обеспечения для оплаты: http://www.postgresql.org/download/products/1
и это находится на pgFoundry: http://pgfoundry.org/projects/mysql2pgsql/
Ответ 5
На этой странице перечислены различия в синтаксисе, но простой рабочий конвертер запросов я еще не нашел. Использование ORM вместо необработанного SQL может помешать этим проблемам.
Я сейчас взламываю конвертер для устаревшей кодовой базы:
function mysql2pgsql($mysql){
return preg_replace("/limit (\d+), *(\d+)/i", "limit $1 offset $2", preg_replace("/as '([^']+)'/i", 'as "$1"', $mysql)); // Note: limit needs order
}
В выражениях CREATE
SQLines преобразует большинство из них в Интернете. Мне все же пришлось редактировать mysqldump позже:
"mediumtext" -> "text", "^LOCK.*" -> "", "^UNLOCK.*" -> "", "`" -> '"', "'" -> "''" in 'data', "0000-00-00" -> "2000-01-01", deduplicate constraint names, " CHARACTER SET utf8 " -> " ".
"int(10)" -> "int" was missed in the last table, so pass that part of the mysqldump through http://www.sqlines.com/online again.
Ответ 6
Посмотрите PG Foundry, дополнительные утилиты для Postgres, как правило, живут там. Я считаю, что инструмент, который вы ищете, существует, хотя.
Ответ 7
вы, скорее всего, никогда не получите инструмент для выполнения такой задачи, которая сделает всю вашу работу за вас. будьте готовы сделать некоторые рефакторинговые работы самостоятельно.
Ответ 8
Попробуйте это, он работает как шарм!
http://www.sqlines.com/online