From: | Gilberto Castillo Martínez <gilberto(dot)castillo(at)etecsa(dot)cu> |
---|---|
To: | joseantonioarce(at)gmail(dot)com |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Migrar de MySQL a PostgreSQL |
Date: | 2009-01-22 15:55:42 |
Message-ID: | 1232639742.6495.16.camel@gilbertoc |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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"
>
From | Date | Subject | |
---|---|---|---|
Next Message | Manuel R. Bercián | 2009-01-22 17:44:21 | Re: Pasar una tabla (de una base de datos postgres) a una hoja de calculo (con exel o openoffice) |
Previous Message | Gonzalo Fernández | 2009-01-22 15:46:28 | Re: Migrar de MySQL a PostgreSQL |