2008-10-01 138 views
52

El título se explica por sí mismo. ¿Hay alguna manera de hacer directamente ese tipo de importación?Cómo importar un archivo .bak de SQL Server en MySQL?

+3

también [cubierto en dba.stackexchange] (http://dba.stackexchange.com/q/20078/1580) –

+0

Epic question bro! Finalmente logré importar el archivo bak de mi proveedor de alojamiento malicioso donde se rompieron todas las herramientas SQL. – ppumkin

Respuesta

58

Los archivos .BAK desde un servidor SQL están en formato de cinta de Microsoft ref (MTF): http://www.fpns.net/willy/msbackup.htm

El archivo bak probablemente contendrá el LDF y archivos MDF ese servidor SQL utiliza para almacenar la base de datos.

Deberá usar el servidor SQL para extraerlos. SQL Server Express es gratuito y hará el trabajo.

Por lo tanto, instale la edición SQL Server Express y abra el Servidor SQL Powershell. Ejecute sqlcmd -S <COMPUTERNAME>\SQLExpress (mientras está conectado como administrador)

y ejecute el siguiente comando.

restore filelistonly from disk='c:\temp\mydbName-2009-09-29-v10.bak'; 
GO 

esto mostrará el contenido de la copia de seguridad - lo que necesita es los primeros campos que indican los nombres lógicos - uno será la base de datos actual y el otro archivo del registro.

RESTORE DATABASE mydbName FROM disk='c:\temp\mydbName-2009-09-29-v10.bak' 
WITH 
    MOVE 'mydbName' TO 'c:\temp\mydbName_data.mdf', 
    MOVE 'mydbName_log' TO 'c:\temp\mydbName_data.ldf'; 
GO 

En este punto se ha extraído la base de datos - a continuación, instalar Microsoft's "Sql Web Data Administrator". junto con this export tool y tendrá una secuencia de comandos SQL que contiene la base de datos.

+1

gracias Richard! Me sacó de un aprieto. –

+3

El problema es que SQL Server 2008 Express Edition solo puede manejar archivos de bases de datos de 10 GB o menos. Tengo un archivo de 30GB con el que tengo que trabajar. La conexión a Internet en el trabajo es demasiado lenta para descargar la imagen .iso de 4 GB de la versión completa de SQL Server 2008 R2, que obtengo de manera gratuita en dreamspark.com como estudiante. Entonces tengo exactamente la misma pregunta. – systemovich

+0

El primer enlace del software de instalación está roto –

2

Aunque mi historial MySQL es limitado, no creo que tengas mucha suerte haciendo eso. Sin embargo, debería poder migrar sobre todos sus datos restaurando el db a un servidor MSSQL, y luego creando un paquete SSIS o DTS para enviar sus tablas y datos al servidor MySQL.

espero que esto ayude

0

Lo dudo mucho. Es posible que desee utilizar DTS/SSIS para hacer esto como dice Levi. Uno piensa que es posible que desee iniciar el proceso sin importar los datos. Simplemente haga lo suficiente para unir las estructuras básicas de la mesa. Luego, querrá cambiar la estructura de la tabla resultante, ya que la estructura que probablemente se creará será, en el mejor de los casos, inestable.

También es posible que tenga que ir un paso más allá y crear un área de preparación que tome todos los datos primero en forma de cadena (varchar). Luego puede crear un script que valide y convierta para ingresarlo a la base de datos "real", porque las dos bases de datos no siempre funcionan bien juntas, especialmente cuando se trata de fechas.

0

Las bases de datos de SQL Server son propiedad de Microsoft. Dos opciones que se me ocurren son:

  1. volcar la base de datos en CSV, XML o formato similar que habías A continuación, cargue en MySQL.

  2. Configure la conexión ODBC a MySQL y luego mediante DTS transporte los datos. Como ha sugerido Charles Graham, es posible que necesite construir las tablas antes de hacer esto. Pero eso es tan fácil como cortar y pegar desde las ventanas de SQL Enterprise Manager a la ventana correspondiente de MySQL.

+0

¡Funcionará si preparo el volcado en formato .sql! – sandeep

8

No pude encontrar la manera de hacerlo directamente.

En su lugar, importé el archivo bak en SQL Server 2008 Express y luego usé MySQL Migration Toolkit.

funcionó como un encanto!

+0

Sí, la importación funcionó bien para mí. Haga clic derecho en el nodo 'bases de datos', haga clic en importar- Primero seleccione el archivo BAK y luego elija la base de datos: automáticamente obtiene el nombre de la base de datos del archivo .bak cargado y lo coloca en la lista. (Para crear la nueva base de datos) Seleccione eso y haga clic importación .. Woohoo - 6 días después! – ppumkin

+0

MySQL Migration Toolkit ha llegado a EOL. vea http://dev.mysql.com/downloads/gui-tools/5.0.html – Jakob

+1

La funcionalidad 'Migración de base de datos' ahora es parte de [MySQL Workbench] (http://dev.mysql.com/downloads/tools/ workbench /) – dazweeja

0

El método que utiliza parte incluida del método de Richard Harrison:

Por lo tanto, la instalación de SQL Server 2008 Express Edition ,

Esto requiere la descarga del Instalador de plataforma web "wpilauncher_n.exe " vez que tenga esta instalada clic en la selección de base de datos (que están también necesario para descargar los marcos y tiempos de ejecución)

Después de instalación vaya a t que las ventanas símbolo del sistema y:

uso sqlcmd -S \ SQLExpress (mientras conectado como administrador)

A continuación, emita el siguiente comando.

restaurar FILELISTONLY de disco = 'c: \ temp \ mydbName-2009-09-29-v10.bak'; GO Esto listará el contenido de la copia de seguridad - lo que necesita son los primeros campos que le dicen los nombres lógicos - uno será la base de datos real y el otro el archivo de registro.

RESTORE mydbName base de datos desde disco = 'c: \ temp \ mydbName-2009-09-29-v10.bak' con Move 'mydbName' TO 'C: \ temp \ mydbName_data.mdf', mover ' mydbName_log 'TO ' c: \ temp \ mydbName_data.ldf '; GO

Disparé hasta la plataforma Web Installer y de la nueva pestaña de lo que me instalado SQL Server Management Studio y levantase el PP para asegurarse de que los datos estaban allí ...

En ese momento traté de la herramienta incluido con MSSQL "SQL Import and Export Wizard" pero el resultado del volcado csv solo incluía los nombres de columna ...

Así que en su lugar acabo de exportar resultados de consultas como "select * from users" de SQL Server Management Studio

0

Para aquellos que intentan la solución de Richard a bove, aquí hay información adicional que puede ayudar a navegar por errores comunes:

1) Cuando se ejecuta restore filelistonly, puede obtener el error 5 del sistema operativo (Acceso denegado). Si ese es el caso, abra el Administrador de configuración de SQL Server y cambie el inicio de sesión de SQLEXPRESS a un usuario que tenga privilegios de escritura locales.

2) @ "Esto mostrará el contenido de la copia de seguridad; lo que necesita son los primeros campos que le digan los nombres lógicos"; si su archivo incluye más de dos encabezados, también deberá explicar qué hacer con esos archivos en el comando RESTORE DATABASE. Si no indica qué hacer con los archivos que están más allá de la base de datos y el registro, el sistema aparentemente intentará usar los atributos listados en el archivo .bak. La restauración de un archivo del entorno de otra persona producirá un 'La ruta tiene atributos no válidos. Debe ser un directorio '(ya que la ruta en cuestión no existe en su máquina). Simplemente proporcionando una instrucción MOVE resuelve este problema.

En mi caso, había un tercer archivo de tipo FTData.El comando MOVE que agregué:

MOVE 'mydbName_log' TO 'c:\temp\mydbName_data.ldf', 
MOVE 'sysft_...' TO 'c:\temp\other'; 

En mi caso, en realidad tuve que hacer un nuevo directorio para el tercer archivo. Inicialmente traté de enviarlo a la misma carpeta que el archivo .mdf, pero eso produjo un error de "error al inicializar correctamente" en el tercer archivo FTData cuando ejecuté la restauración.

3
  1. Abra SQL Server Management Studio en su máquina local.
  2. Haga clic con el botón derecho en la carpeta Bases de datos. En el menú emergente, selecciona Nueva base de datos.
  3. Ingrese el nombre de una base de datos y luego haga clic en Aceptar.
  4. Haga clic con el botón derecho en el icono de la nueva base de datos. En el menú emergente, seleccione Tareas -> Restaurar -> Base de datos.
  5. Seleccione la opción Desde dispositivo y luego haga clic en el botón Examinar.
  6. Haga clic en Agregar y navegue hasta el archivo apropiado. Haga clic en Aceptar.
  7. En la ventana Restaurar base de datos, seleccione la casilla de verificación junto a su archivo BAK.
  8. Cambie a la página Opciones. Seleccione la casilla Sobrescribir la base de datos existente. Haga clic en Aceptar.
  9. Verifique el contenido de su base de datos, que ahora está activa en su máquina local.
+0

Perfecto - esto funcionó para mí. Para el próximo (décimo) paso usé el programa "Importar y Exportar Datos" que viene instalado con SQL Express. No se pudo exportar a Excel, pero CSV estaba bien. – Ben

+6

por favor lea la pregunta cuidadosamente y luego responda. escribió copia desde SQL Server a mySql, no al servidor sql al servidor sql " – logcat

6

MySql tiene una aplicación para importar db desde microsoft sql. Pasos:

  1. abierto MySQL Workbench
  2. Haga clic en "Migración de base de datos" (si es que no se descubra que tienen que instalarlo desde la actualización MySQL)
  3. seguir la lista de tareas de migración mediante el Asistente simple.
+2

MySql Workbench apesta. No puede manejar codificaciones de caracteres lo suficientemente buenas como – Xiao

+9

@Sean, si ve un problema con MySQL Workbench luego archiva un informe de error. La migración es un asunto complicado , por lo que las implementaciones necesitan algunas rondas para estabilizarse. –

0

El archivo .bak de SQL Server es específico de ese dialecto de base de datos y no es compatible con MySQL.

Pruebe usar etlalchemy para migrar su base de datos de SQL Server a MySQL. Es una herramienta de código abierto que he creado para facilitar las migraciones entre diferentes RDBMS.

Instalación rápida y ejemplos se proporcionan aquí en the github page, y una explicación más detallada de los orígenes del proyecto se pueden encontrar here.

Cuestiones relacionadas