2008-08-01 27 views
79

He estado golpeando mi cabeza contra SQL Server 2005 tratando de obtener una gran cantidad de datos. Me dieron una base de datos con casi 300 tablas y necesito convertir esto en una base de datos MySQL. Mi primera llamada fue utilizar bcp, pero desafortunadamente no produce CSV válidos: las cadenas no están encapsuladas, por lo que no puedes tratar con ninguna fila que tenga una cadena con una coma (o lo que sea que uses como delimitador) y aún tendría que escribir a mano todos los enunciados de la tabla de creación, ya que obviamente CSV no dice nada sobre los tipos de datos.Cómo exportar datos de SQL Server 2005 a MySQL

Lo que sería mejor si hubiera alguna herramienta que pudiera conectarse tanto a SQL Server como a MySQL, entonces haga una copia. Se pierden vistas, procedimientos almacenados, desencadenantes, etc., pero no es difícil copiar una tabla que solo utiliza tipos base de una base de datos a otra ... ¿o sí?

¿Alguien sabe de una herramienta de este tipo? No me importa cuántas suposiciones o simplificaciones se produzcan, siempre que admitan enteros, flotantes, fechas y cadenas. De todos modos, tengo que podar mucho, normalizar, etc., así que no me importa guardar llaves, relaciones ni nada por el estilo, ¡pero necesito el conjunto inicial de datos rápidamente!

+1

He oído que SQLYob puede hacerlo. aquí: borjab

+1

He oído algunas personas utilizando [MSSQL2MySQL] (http://www.kofler.cc/mysql/mssql2mysql.html) con éxito, pero no puedo responder por mí mismo. –

+0

Esta herramienta es exactamente lo que solicitó: [Full Convert Enterprise] (http://www.spectralcore.com/fullconvert/). Es cierto que pierde vistas, procedimientos y activadores, pero está muy optimizado para tablas enormes. Otra solución (más cara) que traduce todos los objetos (procedimientos, etc.) es [SqlTran SQL Server to MySQL] (http://www.sqltran.com/sql-server-to-mysql/) –

Respuesta

7

Rodar su propia solución PHP sin duda funcionará, aunque no estoy seguro de si hay una buena manera de duplicar automáticamente el esquema de una DB a la otra (tal vez esta era su pregunta).

Si solo está copiando datos, y/o necesita un código personalizado para convertir los esquemas modificados entre los dos DB, recomendaría utilizar PHP 5.2+ y las bibliotecas PDO. Podrá conectarse utilizando PDO ODBC (y usar controladores MSSQL). Tuve muchos problemas para obtener campos de texto grandes y caracteres de varios bytes de MSSQL en PHP usando otras bibliotecas.

5

Otra herramienta para probar sería la suite SQLMaestro - http://www.sqlmaestro.com Es un poco complicado clavar la herramienta precisa, pero tienen una variedad de herramientas, tanto gratuitas como de compra, que manejan una amplia variedad de tareas para múltiples plataformas de bases de datos . Sugeriría probar la herramienta Asistente de datos primero para MySQL, ya que creo que tendrá la herramienta de "importación" adecuada que necesita.

58

La mejor manera que he encontrado es el MySQL Migration Toolkit provisto por MySQL. Lo he usado con éxito para algunos grandes proyectos de migración.

+2

+1 - Ahora es EOL, y MySQL Workbench va a incluir un complemento de migración (versión anterior 5.2) pero por el momento use el siguiente enlace: http://dev.mysql.com/downloads/gui-tools/5.0. html –

+0

no desea convertir columnas DATE o DATETIME :( –

+1

Nota: Actualmente, MySQL Migration Toolkit no está disponible para Linux (desde http://dev.mysql.com/doc/migration-toolkit/en/gui- tools-installation-linux.html) – mkirk

8

SQL Server 2005 Las ediciones "Estándar", "Desarrollador" y "Empresa" tienen SSIS, que reemplazó a DTS del servidor Sql 2000. SSIS está integrado en su propia base de datos y puede encontrar una conexión que otra persona ha escrito para MySQL. Here es un ejemplo. Una vez que tenga sus conexiones, debería poder crear un paquete SSIS que mueva los datos entre los dos.

No he tenido que mover datos de SQlServer a MySQL, pero imagino que una vez que se instala la conexión MySQl, funciona igual que mover datos entre dos SQLServer DBs, lo cual es bastante sencillo.

8

Uso de MSSQL Management Studio he realizado la transición de tablas con MySQL OLE DB. Haga clic derecho en su base de datos y vaya a "Tareas-> Exportar datos", desde allí puede especificar un origen MsSQL OLE DB, el origen OLE DB de MySQL y crear las asignaciones de columnas entre las dos fuentes de datos.

Lo más probable es que desee configurar la base de datos y las tablas de antemano en el destino MySQL (la exportación querrá crear las tablas automáticamente, pero esto a menudo da como resultado un error). Puede crear rápidamente las tablas en MySQL usando las "Tareas-> Generar Scripts" haciendo clic derecho en la base de datos. Una vez que se generen los scripts de creación, deberá pasar y buscar/reemplazar palabras clave y tipos que existen en MSSQL a MYSQL.

Por supuesto, también podría hacer una copia de seguridad de la base de datos como es normal y encontrar una utilidad que restaurará la copia de seguridad de MSSQL en MYSQL. No estoy seguro si existe uno sin embargo.

Cuestiones relacionadas