El jue, 22-01-2009 a las 09:40 -0600, Jose Antonio Arce escribió: > Saludos, espero que esten bien. > > Podrían recomendarme una herramienta para migrar mi base de datos mysql > 5.0.22 a PostgreSQL 8.3.5
Migración de Mysql server para PostgreSQL Encontramos varios formas: Primera forma: utilizar la script "mysql2pgsql.perl" A considerar: * No se migra estructura de un atributo con comentarios. * Los atributos no deben tener caracteres raros Ej.ñ. Descargar la scipt y salvar con el mysql2pgsql.perl: mysql2pgsql.perl Pasos para utilizarla: * Sacar el backup de la estructura de base de datos en Mysql. mysqldump --database --table --no-data > mysql_.sql * Convertir para que PostgreSql lo pueda cargar. perl mysql2pgsql.perl mysql_.sql postgres_.sql --nodrop * La opción --nodrop elimina las eliminaciones de las tablas, si se quiere ver mas opciones --help. su postgres createdb NombreDB psql -f postgres_.sql -u dad NombreDB * Para los datos. Exportar de MySql solo datos con la opción de --complete-insert y -c. Segunda forma: El Gestor gráfico de bases de datos en mysql, phpmyadmin permite exportar backups con compatibilidad para varios gestores de bases de datos entre ellos Postgres. Se restaura de la forma anterior. Tercer forma: Utilizando ambos motores al mismo tiempo: Temporalmente, se estableció una conexión con dbi-link. La documentación es más o menos sencilla, sólo hay que retocar el script que corresponda a mysql. Los pasos: 1. crear el lenguaje plperl para la BD: create language plperlu; 2. lanzas dbi_link.sql ( te crea el esquema y las funciones necesarias). psql < dbi_link.sql 3. Conectar con la BD. psql < mysql.sql * Vale decir, que los datos no se están copiando, sino que se ven como en tiempo de replicación. Esto lo logré con algo de ayuda, además de la documentación, de parte del amigo seyko, que se puede ver en http://www.forosdelweb.com/f21/reporte-almacen-con-datos-postgresql-mysql-536140/#post2201060. Prueba de funcionamiento: SELECT dbi_link.make_accessor_functions( 'dbi:mysql:database=sir;host=localhost', 'root', , '--- AutoCommit: 1 RaiseError: 1 ', NULL, NULL, NULL, 'sir' ); En MySQL mysqldump database -uusername -p --no-data > tables.sql; create table foo ( id int not null auto_increment primary key, state enum('enabled', 'disabled') ); En PostgreSQL create table foo ( id int not null primary key default nextval('foo_id_seq'), state varchar(8) check (state in ('enabled', 'disabled')) ); create sequence foo_id_seq; select setval('foo_id_seq', (select max(id) from foo)); > > Gracias, > > Jose Arce > Costa Rica > -- > TIP 7: no olvides aumentar la configuración del "free space map" > -- TIP 10: no uses HTML en tu pregunta, seguro que quien responda no podr� leerlo