Pregunta

Yo he probado las herramientas de la lista aquí, algunos con más éxito que otros, pero ninguno me dio válida postgres sintaxis podría utilizar (tinyint errores, etc.)

¿Fue útil?

Solución

Hay un mysqldump la opción que hace que la salida de PostgreSQL código:

mysqldump --compatible=postgresql ...

Otros consejos

Después de algún tiempo en Google he encontrado este post.

  1. Instalar el mysql2psql gema utilizando [sudo] gem install mysql2psql.
  2. Crear un archivo de configuración mediante la ejecución de mysql2psql.Usted verá un error, pero un mysql2psql.yml el archivo debe haber sido creado.
  3. Editar mysql2psql.yml
  4. Ejecutar mysql2psql de nuevo a migrar sus datos.

Sugerencia:Conjunto force_truncate a true en su mysql2psql.yml archivo de configuración si desea que la base de datos postgresql para ser limpiado antes de la migración de datos.

He usado py-mysql2pgsql.Después de la instalación, sólo necesita simple archivo de configuración en yml formato (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 información en su página de inicio https://github.com/philipsoutham/py-mysql2pgsql.

Hay una pieza de pagar el software que aparece en este postgresql página:http://www.postgresql.org/download/products/1

y esto es en pgFoundry:http://pgfoundry.org/projects/mysql2pgsql/

Esta página enumera las diferencias en la sintaxis, sino un simple trabajo de consulta convertidor no he encontrado todavía.El uso de un ORM paquete en lugar de sentencias SQL de prevenir estos problemas.

Actualmente estoy poniendo un convertidor de un legado codebase:

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 CREATE las declaraciones, SQLines convierte la mayoría de ellos en línea.Todavía tuve que editar el mysqldump después, aunque:

"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 con ésta , funciona como un encanto !!

http://www.sqlines.com/online

Eche un vistazo a PG Fundición, utilidades extra para Postgres tienden a vivir allí.Yo creo que la herramienta que estás buscando no existe, aunque.

lo más probable es que nunca obtener una herramienta para la tarea que iba a hacer todo el trabajo por usted.esté preparado para hacer algo de refactorización trabajo usted mismo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top