soporta - ¿Existe una herramienta simple para convertir mysql en sintaxis postgresql?
postgresql to mysql converter online (8)
He probado las herramientas que se enumeran aquí , algunas con más éxito que otras, pero ninguna me dio una sintaxis postgres válida que pudiera usar (errores tinyint, etc.)
Eche un vistazo a PG Foundry , servicios adicionales para Postgres tienden a vivir allí. Sin embargo, creo que la herramienta que estás buscando existe.
Hay una pieza de software de pago en esta página postgresql: http://www.postgresql.org/download/products/1
y esto está en pgFoundry: http://pgfoundry.org/projects/mysql2pgsql/
lo más probable es que nunca obtenga una herramienta para tal tarea que haría todo su trabajo por usted. prepárese para hacer un trabajo de refactorización usted mismo.
Hay una opción mysqldump
que lo hace salir del código PostgreSQL:
mysqldump --compatible=postgresql ...
Después de un tiempo en Google encontré esta publicación .
- Instala la gema mysql2psql usando
[sudo] gem install mysql2psql
. - Cree un archivo de configuración ejecutando
mysql2psql
. Verá un error, pero debería haberse creado un archivomysql2psql.yml
. - Editar
mysql2psql.yml
- Ejecute
mysql2psql
nuevamente para migrar sus datos.
Consejo: Establezca force_truncate
en true
en su archivo de configuración mysql2psql.yml
si desea que la base de datos postgresql se mysql2psql.yml
antes de migrar sus datos.
He usado py-mysql2pgsql . Después de la instalación, solo necesita un archivo de configuración simple en formato yml (fuente, destino), por ejemplo:
# 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
Uso:
> 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.
Más en su página de inicio https://github.com/philipsoutham/py-mysql2pgsql .
Esta página enumera las diferencias de sintaxis, pero aún no encontré un convertidor de consultas de trabajo simple. Usar un paquete ORM en lugar de SQL sin formato podría evitar estos problemas.
Actualmente estoy pirateando un convertidor para una base de código heredada:
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
}
Para las CREATE
, SQLines convierte la mayoría de ellas en línea. Aún así, tuve que editar el mysqldump después:
"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.
¡Prueba este, funciona como el encanto!
http://www.sqlines.com/online