Skip site navigation (1) Skip section navigation (2)

Re: Migrar de MySQL a PostgreSQL

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 (view raw or flat)
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"
> 


In response to

pgsql-es-ayuda by date

Next:From: Manuel R. BerciánDate: 2009-01-22 17:44:21
Subject: Re: Pasar una tabla (de una base de datos postgres) a una hoja de calculo (con exel o openoffice)
Previous:From: Gonzalo FernándezDate: 2009-01-22 15:46:28
Subject: Re: Migrar de MySQL a PostgreSQL

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group