2010-10-12 15 views
67

Estoy tratando de convertir desde un archivo de copia de seguridad de base de datos de SQL Server (.bak) a MySQL. This question y las respuestas han sido muy útiles, y he importado con éxito la base de datos, pero ahora estoy atascado en la exportación a MySQL.¿Cómo exportar la base de datos de SQL Server a MySQL?

El MySQL Migration Toolkit se sugirió, pero parece que han sido sustituidos por el Banco de trabajo MySQL. ¿Es posible usar MySQL Workbench para migrar desde SQL Server de la misma manera que funcionó la herramienta de migración?

¿O está el Kit de herramientas de migración todavía disponible en algún otro lado?

+3

Tengo un MS SQL base de datos y quiero importar los datos en él a MYSQL para reemplazar el sistema original. Ahora he encontrado una versión anterior de Migration Toolkit pero todavía no he logrado conectarme con MS SQL Server. – matkins

+0

Quizás esto podría ayudar. http://stackoverflow.com/questions/2986404/convert-tsql-to-mysql/23088879#23088879 – Madagaga

+0

Estoy de acuerdo. Todavía no encuentro nada que me ayude sustancialmente a convertir de mssql a mysql, a pesar de que este tema está marcado como duplicado. Mssql to Mysql es un tema tan variado caso por caso. Es bastante insultante para quienes marcaron esto como duplicado. ¡Qué ignorante! – Curly

Respuesta

2

Parece que correctas: El kit de herramientas de migración se integrará con MySQL Workbench, pero no creo que esto se haya completado todavía. Ver el anuncio al final de su vida por MySQL Query Browser (que incluía el Migration Toolkit):

http://www.mysql.com/support/eol-notice.html

MySQL mantener archivos de los paquetes de herramientas visuales de MySQL:

http://dev.mysql.com/downloads/gui-tools/5.0.html

+0

Sin duda, este es el estado real. Las buenas noticias son que con http://dev.mysql.com/doc/migration-toolkit/en/scripted-migration.html puede hacerlo usted mismo. ¡Vea los guiones de GRT Shell y Lua! – albfan

+1

Enlace ya no existe. – powder366

2

que utiliza la cadena de conexión a continuación en la ficha Avanzadas del kit de herramienta de migración de MySQL para conectarse a SQL Server 2008 instancia:

jdbc:jtds:sqlserver://"sql_server_ip_address":1433/<db_name>;Instance=<sqlserver_instanceName>;user=sa;password=PASSWORD;namedPipe=true;charset=utf-8;domain= 

Por lo general, el parámetro tiene "systemName \ instanceName". Pero en lo anterior, no agregue "nombre del sistema \" (use solo InstanceName).

Para comprobar qué nombre de instancia debe ser, vaya a services.msc y compruebe el DisplayName de la instancia de MSSQL. Muestra similar a MSSQL $ instanceName.

Espero que esta ayuda en la conectividad de MSSQL desde mysql migration toolKit.

4

Puede hacerlo fácilmente utilizando la herramienta Data Loader. Ya lo hice antes de usar esta herramienta y me pareció buena.

+0

Parece que esto es solo para Windows. – powder366

18

Yo uso sqlyog para migrar de mssql a mysql. Intenté Migration toolkit and workbench pero me gustó sqlyog por su SJA. Pude programar el proceso de importación y pude hacer una importación incremental usando la cláusula WHERE.

enter image description here

36

Puede utilizar MySQL Workbench que proporciona una forma de migrar rápidamente los datos y las aplicaciones de Microsoft SQL Server a MySQL empleando menos tiempo y esfuerzo.

Esta herramienta tiene un montón de características interesantes como:

  • migraciones de bases de datos - Permite a las migraciones de Microsoft SQL Server, Sybase ASE y PostgreSQL.
  • gestión de proyectos de migración - permite que las migraciones sean configurados, copiado, editado, ejecutadas y programadas.

Leer más http://www.mysql.com/products/workbench/migrate/

+0

Lo usé para migrar de SQL Server en mi Mac. También se descargaron los controladores http://www.actualtech.com/download.php y el Administrador ODBS original de Mac. – powder366

+1

@ powder366, ¿puede ser más específico sobre cómo conectar su Mac a SQL Server? ¡Gracias! – bizi

+0

¡FUNCIONA! Después de no poder importar desde PhpMyAdmin (_o'rly? _), Y probar la herramienta de conversión de esquemas de AWS, que se negó a instalar tanto en mi PC con Win7 como en Win10 sin dar ningún mensaje de error, ¡finalmente conseguí una herramienta de trabajo! Como no pude crear una "conexión" a un DB de servidor SQL en Workbench, pensé que me faltaba un controlador ODBC en funcionamiento. Pero estaba equivocado. Parece que el único lugar en Workbench donde puede conectarse a dicho SQL-Server es el cuadro de diálogo de migración. Entonces, utilicé HeidiSQL para probar mi conexión fuera de Workbench. Thx @Nolwennig para el video (en los comentarios de la pregunta) – Balmipour

-1

tuve algunos datos que tenía que obtener de mssql en MySQL, tenía dificultades para encontrar una solución. Así que lo que hice en el final (un poco de una manera de largo aliento para hacerlo, pero como último recurso funciona) era:

  • Abrir la base de datos mssql en SQL Server Management Studio Express (Solía ​​2005)
  • abierto cada tabla de vuelta y
  • Haga clic en el cuadro de la esquina izquierda superior para seleccionar toda la tabla:

  • Copiar datos al portapapeles (Ctrl + v)

  • ms abra excel
  • Pegar datos desde el portapapeles
  • Guardar archivo de Excel como CSV
  • Repetir lo anterior para cada tabla
  • Ahora debería ser capaz de importar los datos en MySQL

espero que esto ayude

+1

Mirando las otras respuestas, parece que puede usar MySQL Workbench para migrar. ¿Por qué harías esto a mano? (Para unas pocas tablas tu método puede funcionar, pero si tienes muchas tablas, es solo un trabajo interminable.) – Styxxy

+0

realmente, ¿eso es lo que hiciste ????? – Dementic

+0

Esto no es una migración, lol. Esta es una copia de datos pegar.La migración hace mucho más que eso, y si tienes 50 tablas, ¿lo harás para todas? – daminufe

5

Como se mencionó anteriormente, si sus datos contienen caracteres tabulados, comas o nuevas líneas en sus datos, será muy difícil exportarlos e importarlos con CSV. Los valores se desbordarán fuera de los campos y obtendrá errores. Este problema es aún peor si alguno de sus campos largos contiene texto de varias líneas con caracteres de nueva línea en ellos.

Mi método en estos casos es utilizar la utilidad de línea de comandos BCP para exportar los datos del servidor SQL, luego usar el comando LOAD DATA INFILE .. INTO TABLE en MySQL para volver a leer el archivo de datos. BCP es uno de las utilidades de línea de comandos de SQL Server más antiguas (que datan del nacimiento de SQL Server - v6.5) pero aún existen y siguen siendo una de las formas más fáciles y confiables de obtener datos.

Para utilizar esta técnica es necesario crear cada tabla de destino con el mismo o equivalente esquema en MySQL. Lo hago haciendo clic derecho en la base de datos en el administrador de la empresa SQL, luego Tareas-> Generar secuencias de comandos ... y crear una secuencia de comandos SQL para todas las tablas. A continuación, debe convertir manualmente el script en SQL compatible con MySQL (definitivamente la peor parte del trabajo) y finalmente ejecutar los comandos CREATE TABLE en la base de datos MySQL para tener tablas coincidentes con las versiones del servidor SQL en columna, vacías y listas para datos.

A continuación, exporte los datos desde el lado MS-SQL de la siguiente manera.

bcp DatabaseName..TableName out TableName.dat -q -c -T -S ServerName -r \0 -t !\t! 

(Si está utilizando SQL Server Express, utilice un valor -S este modo: -S "equipo \ SQLExpress")

que creará un archivo llamado TableName.dat, con campos delimitados por! [tab]! y filas delimitadas por \ 0 caracteres NUL.

Ahora copia los archivos .dat en/tmp en el servidor MySQL y carga en el lado de MySQL, así:

LOAD DATA INFILE '/tmp/TableName.dat' INTO TABLE TableName FIELDS TERMINATED BY '!\t!' LINES TERMINATED BY '\0'; 

No olvide que las tablas (TableName en este ejemplo) deben ser creados ya en el lado de MySQL.

Este procedimiento es dolorosamente manual cuando se trata de convertir el esquema SQL, sin embargo, funciona incluso para los datos más difíciles y porque utiliza archivos planos, nunca es necesario convencer a SQL Server para que hable con MySQL, o viceversa .

Cuestiones relacionadas