На этой странице перечислены различия в синтаксисе, но простой конвертер рабочих запросов я еще не нашел. Использование пакета 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.