Estoy buscando desesperadamente una herramienta de conversión para convertir una gran base de datos mysql a postgresql. Necesito que la herramienta / script sea:
- Gratis
- Funciona bajo Linux
- Fácil de usar y sin errores.
- Realmente intentaste y confirmas que funciona
- Preferiblemente, no escrito con Java o Ruby
He probado diferentes herramientas enumeradas aquí , pero ninguna funcionó para mí.
Gracias de antemano.
mysql
postgresql
linux
hbp
fuente
fuente
Respuestas:
La migración entre dos DBMS muy diferentes requiere mucho más que solo migrar los datos. Pero la migración de los datos suele ser la parte más fácil.
La forma en que lo intenté, que es gratis y puedo confirmar que funciona:
Importar los datos podría ser realmente difícil si confiara en el comportamiento de MySQL para aceptar datos ilegales (como el 31 de febrero)
Supongo que esto será más rápido que buscar una herramienta, evaluar un montón de ellas y luego tratar de entender la que elegiste. Pero depende de a qué tipo de "grande" se refiera. Si grande es varios cientos de tablas, esto podría no ser factible. Si grande solo se refiere al número de filas, entonces esta es probablemente la forma más rápida de hacerlo.
Existen algunas herramientas que pueden volcar un esquema de base de datos en un formato independiente de DBMS (XML), como Liquibase , SchemaSpy o WbSchemaReport . Con Liquibase probablemente sea el más fácil de usar. Los otros requerirán un trabajo manual escribiendo / extendiendo el XSLT para transformar el XML generado.
Si está utilizando desencadenantes y procedimientos almacenados en MySQL, no creo que haya una herramienta automatizada que pueda traducirlos sin requerir una reparación manual importante después, y luego los procedimientos generados probablemente no usarían ninguna función avanzada del DBMS objetivo .
fuente
Tuve que hacerlo recientemente y dado que me habría llevado demasiado tiempo buscar una herramienta y poder hacer cosas con ella, lo hice a mano con vim y substitution-foo
INT NOT NULL AUTO_INCREMENT
(o algo como esto) conSERIAL
TEXT
(sin diferencia de velocidad en el uso deTEXT
,VARCHAR
o similar)'
ENGINE InnoDB
(o lo que sea)UNSIGNED
BYTEA
'
y nada másCONCAT
como respaldo para la concatenación de cadenas no estándar, antes de 9.1 se hizo usando'string' || ' string'
"
Cada una de esas balas debe hacerse con una sola sustitución.
Exporté el esquema y los datos por separado . Asegúrese de usar
INSERT
s en lugar deCOPY
. Si no están sucediendo cosas financieras, los datos deberían requerir (casi) ninguna limpieza. Asegúrate de que todo esté encendidoUTF-8
. Con 2 archivos separados, el esquema se vuelve más manejable y no tiene un archivo de 1GB para editar.Al cargar el esquema, obtiene información bastante detallada sobre dónde se encuentra un error, por lo que la depuración debería ser bastante simple.
fuente
Estoy lanzando esto por ahí, nunca lo he intentado, pero Tungesten Replicator puede hacer lo que quieras. Es principalmente una herramienta de replicación, pero creo que puede tener un proceso de arranque que puede ayudarlo al menos con la pieza de datos.
fuente