Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Migracion de datos de SQL Server a MySQL

1,892 views
Skip to first unread message

aitiba

unread,
Apr 2, 2007, 8:43:12 PM4/2/07
to
Buenas,

Quiero migrar una base de datos SQL Server a MySQL. Se me
ocurre una forma de hacerlo:

Mediante un DTS para pasarlo a access y de hay a un
fichero sql.OK.Voy al managment studio 2005 y no he encontrado por
ningun sitio una opcion para pasar mi base de datos a access. ¿Donde
esa opcion? ¿es buena idea hacerlo asi? ¿se os ocurre alguna mas
simple?


Gracias. Un saludo. aitiba

gato2006chile

unread,
Apr 2, 2007, 11:43:08 PM4/2/07
to
aitiba escribió:
Y con la herramienta de migracion de mysql?

marco...@gmail.com

unread,
Apr 3, 2007, 12:24:52 AM4/3/07
to
Hola aitiba:
Te recomendaría como primera medida enviar mas información sobre la
migración que queres hacer. Por ejemplo que versión de SQL Server es y
sobre todo que versión de MySQL, también datos como Si tenes o no
procedimientos almacenados en tu base SQL, si tienes la base muy
cargada, con muchos registros, con datos criticos, etc.
Sin entrar en discusión de si es bueno o no hacer esa migración, acá
van algunas sugerencias:

1 - Usar alguna herramienta de modelado de datos que acepte re-
ingeniería inversa (esto es: leen esquemas de Bases de datos de un
motor en particular y generan script SQL con la definición en SQL de
las tablas y también te permiten migrar los datos entre una y otra
base). Como sugerencia podrías usar una herramienta de Embarcadero
que se llama ER-Studio, la última versión es la 7.1 (creo), y acá esta
el sitio con información del producto:
http://www.embarcadero.com/products/erstudio/index.html

2 - Si fueras a migrar tu base SQL Server a una versión de MySQL
anterior a las 5.0 o la 4, como por ejemplo la versión 3.23 que no
acepta restricción de integridad referencial, tendrías que tener mucho
cuidado al momento de generar tu script SQL con la definición de las
tablas porque al momento de querer correr el mismo Script en la
consola del MySQL te dará un error. La versión 5, si algún linuxero me
ayuda creo que ya trae procedimientos almacenados y stored procedures.

Lo que estoy queriendo decir en este ejemplo es que exportes la
definición de tus tablas como un Script que contenga instrucciones en
SQL 92, después lo corres en la consola del mysql (podría ser el MySQL-
Front) y ya estaría lista la definición de tu base nuevamente. Pero
hasta aquí sin:
-Datos.
-Ni restricción (en el caso de una versión de MySQL vieja)
- Ni procedimientos almacenados (también en el caso de una versión de
MySQL Vieja)

3 - Para migrar los datos podrías pasar los registros de las tablas a
archivos de texto plano (botón derecho en la consola del Enterprise
manager y exportar) y una vez definida la tabla en el MySQL con los
scripts que generaste anteriormente puedes importar esos datos, o más
rápido usar alguna herramienta como te decía en el punto 1.

Este es la herramienta de modelado y migración del MySQL 5.0
http://www.mysql.com/products/tools/workbench/

También está para la versión 5.0 la siguiente herramienta
MySQL Migration Toolkit
http://www.mysql.com/products/tools/migration-toolkit/

Y de esa herramienta anterior acá hay un video donde te muestra como
pasar de SQL SERVER A MYSQL:
http://www.mysql.com/products/tools/migration-toolkit/tutorials/migrate-sql-server.html

4 - Te recomiendo que te fijes muy bien al momento de pasar tu Base de
SQL Server a Access o Excel (peor aun que solo soporta 65 mil líneas
en office 2003) y el access se quiere poner un poco lerdón cuando se
le carga mucho.

5 - no dejes de ver otras herramientas, sé que hay muchas en el
mercado inclusive bien especificas que se dedican a hacer migraciones
entre bases de datos, pero mis preferidas son las que te permiten
modelar y alguna clase de re-ingeniería inversa como decía en el
primer punto.

6 - Por más que el DTS funcione muy bien, no dejes de controlar si tus
registros son bien exportados, que no de erros, a veces al pasarlo a
Excel se cambia de formato o se pierden registros, fíjate bien que
separador de campos y de líneas estas usando, y en el caso de que
pases tus datos a archivos planos como método intermedio te recomiendo
que usar el TextPad para revisar esos archivos (es mucho más potente
que el Notepad del Windows y además te permite editar código en
algunos lenguajes). Para bajarlo gratis podes entrar en:
http://www.textpad.com/download/index.html

7 - Por último. Migrar Procedimientos almacenados de SQL Server a
MySQL?, es buena idea?
Bueno imagínate que SQL Server tiene funciones especiales que usas
para manipular datos y además tienes consultas complejas bien
optimizadas de forma que aprovechas al máximo:
a) tus conocimientos de SQL
-b) El uso de las funciones de manipulación de datos del sql (cast,
convert, etc)
c) La parte procedural del SQL Server

De los 3 puntos anteriores es lo más probable que tengas
compatibilidad en la parte del SQL Estándar, pero ya en funciones y
procedimientos puede que no encuentres una funcione similar en MySQL.
Peor aún, si bien todos los motores de bases de datos se dicen
compatibles con SQL 92, cada uno lo implemente a su manera y siempre
hay algunas pequeñas diferencias, cierto?

Por todo esto, creo que no es buena idea migrar una base de datos con
Stored Procedures, si bien podrías hacerlo, pero el rendimiento no
sería el mismo y te llevaría tanto tiempo que no se si vale la pena ¡!

Otra sugerencias es que: la migración de SQL Server a MySQL se tiene
que justificar verdad?, es decir, en una empresa que tiene datos
valiosos esto no es una buena práctica "De todos los días" , si bien
es cierto que a veces necesitamos migrar datos a diferentes formatos
por razones justificables, yo igualmente prefiero mantener mi base de
Datos SQL y no mover mucho la información.

Espero sirvan mis comentarios.

Saludos,

Marcos

marco...@gmail.com

unread,
Apr 3, 2007, 2:10:48 PM4/3/07
to
Hola:
Quería adicionar unos comentarios Extras para completar mi respuesta,
si es que no te molesta.

En relación a lo que te decía que uses TextPad, es porque tiene
algunas características que no lo tiene ni el Excel ni el notepad del
Windows XP (desconozco como funcionan los editores de archivos planos
del Windows Vista).

Como te decía antes, el Excel no es una buena opción si los datos de
la tabla que estas exportando tienen mas de 65mil registros, pueden
ocurrir dos cosas al intentar abrirlos para editarlos: o se te cuelga
el Excel o te va demorar un par de minutos al cabo de los cuales te va
dar un mensaje que dice que la tabla es muy grande y que no se
pudieron cargar todos los registros.

Porque no usar Notepad? porque no es muy potente y su funcionalidad es
muy reducida, en mi caso, me toco trabajar con unos archivos planos de
20 Mb (ya pensaste cuantos registros puede tener adentro? Muchoooss!!)
y el notepad no me los habría por ser muy grande.

Ahora el Textpad te los abre y tiene una funcionalidad que no tiene el
notepad, "te permite seleccionar por columnas" como si fuera un Excel,
entonces ahí tu puedes decidir exportar una tabla sin una columna o
adicionar otra, etc. como si fuera un Excel sin riesgos de perder
datos!

Me estoy refiriendo al Office 2003, no he usado mucho Office 2007 aun.

Ahora bien si tu tabla o tablas que quieres migrar no tienen muchos
registros, tengo dos sugerencias si es que necesitas formatear tu
tabla antes de pasarla al MySQL:
- Pasarla a Excel y retocar las filas y columnas con funciones del
Excel, adicionando o sacando columnas, datos etc. O bien procesarlo
usando Macros en Visual Basic.
- Pásalas a Access y haz un par de consultas SQL en el formato que te
gustaría que se vean los datos en tu MySQL, posterior a eso, haz clic
derecho SOBRE ESA CONSULTA (no sobre la tabla) y dale a Exportar y ya
puedes elegir el formato que quieras (txt, Excel, etc.). Lo que hace
es, te crea un txt con el formato exacto que le diste en tu consulta.
Y eso es muy muy bueno! y fácil de hacer.!

Ahora si tuvieras las necesidad de organizar los datos de un tabla
exportada a un archivo plano y este archivo es muy grande (15 o 20 Mb
o mas) y necesitas cambiar el orden de algunas columnas, limpiar
blancos, cambiar valores de datos, etc. Lo que te recomiendo es usar
PERL, si estas familiarizado con C o algo parecido la sintaxis es casi
la misma con la diferencia en que estarías usando un lenguaje de
Scripting especialmente diseñado para eso y es realmente muy muy
rápido. Con eso conseguirías re organizar tus datos.

Personalmente lo he usado el año pasado cuando el Excel demoraba
varios minutos en abrir el archivo, mi script en perl lo formateaba
por completo en unos pocos segundos.

Algunos otros Tips:
- al exportar desde SQL Server a archivo plano controla siempre el
tamaño del archivo, es decir, tendrías que tener una idea de cuantos
MB te dará esa exportación, porque si esperas 19 Mb y te lo exporta en
2 es porque no exporto satisfactoriamente todos los datos.
- Después de exportado a un archivo plano, ábrelo y controla si el
ultimo y el primer registros te coinciden con el de tu SQL, si están
todas las columnas y revisa aleatoriamente algunos registros a ver si
están bien.
- Si lo pasaste a Access hazte algún select Count(*) a ver si el
numero de registros es el mismo que el del SQL Server y si tienes
algún campo numérico podrías hacer algún Sum o AVg a ver si da lo
mismo que el SQL.
- Esto no es una regla general ok? solo te estoy dando idea y espero
sea de utilidad para resolver tu migración sin problemas !!

Saludos,

Marcos


Jose A. Fernandez

unread,
Apr 3, 2007, 3:18:42 PM4/3/07
to
Hola aitiba
Despues de esta extensa respuesta e Marcos, no tengo nada que agregar
Salvo dar otra opcion (que siempre es buena) pero del soft jeej
(porque de recomendacion Marcos parece que topo con problemas de
similares caracteristicas)
Yo utilizo para estas manipulaciones de archivos de texto Notepad++
http://notepad-plus.sourceforge.net/es/site.htm

Tampoco quiero hacer una discusion de cual es mejor, pero doy
simplementa otra alternativa que la vengo usando desde hace unos años

Enlaces:
------------------
Notepad++ VS. TextPad
http://jimbojw.com/wiki/index.php?title=NPP_vs_Textpad

_________________________
Jose A. Fernandez

0 new messages