traducir soporta segundo por optimizar online migrar lentas importar exportar datos cuantas convertir consultas archivo mysql database postgresql

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.



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 .

  1. Instala la gema mysql2psql usando [sudo] gem install mysql2psql .
  2. Cree un archivo de configuración ejecutando mysql2psql . Verá un error, pero debería haberse creado un archivo mysql2psql.yml .
  3. Editar mysql2psql.yml
  4. 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