una online importar guardar exportar datos como mysql sql-server mysqldump

mysql - online - importar datos de sql a excel



Importar base de datos MySQL en un servidor MS SQL (8)

Tengo un archivo .sql de un volcado de MySQL que contiene tablas, definiciones y datos para insertar en estas tablas. ¿Cómo puedo convertir esta base de datos representada en el archivo de volcado a una base de datos de MS SQL Server?


Aquí está mi enfoque para importar archivos .sql a MS SQL:

  1. Exporte la tabla de MySQL con las --compatible=mssql y --extended-insert=FALSE :

    mysqldump -u [username] -p --compatible=mssql --extended-insert=FALSE db_name table_name > table_backup.sql

  2. Divida el archivo exportado con PowerShell en 300000 líneas por archivo:

    $i=0; Get-Content exported.sql -ReadCount 300000 | %{$i++; $_ | Out-File out_$i.sql}

  3. Ejecute cada archivo en MS SQL Server Management Studio

Hay algunos consejos sobre cómo acelerar los insertos .

Otro enfoque es usar la opción mysqldump -where . Al usar esta opción, puede dividir su tabla en cualquier condición que sea compatible con la cláusula sql.




Hoy tuve un problema muy similar: necesitaba copiar una gran tabla (5 millones de filas) de MySQL a MS SQL.

Estos son los pasos que he hecho (en Ubuntu Linux):

  1. Se creó una tabla en MS SQL cuya estructura coincide con la tabla fuente en MySql.

  2. Línea de comandos de MS SQL instalada: https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-tools#ubuntu

  3. Mesa descargada de MySql a un archivo:

mysqldump / --compact / --complete-insert / --no-create-info / --compatible=mssql / --extended-insert=FALSE / --host "$MYSQL_HOST" / --user "$MYSQL_USER" / -p"$MYSQL_PASS" / "$MYSQL_DB" / "$TABLE" > "$FILENAME"

  1. En mi caso, el archivo de volcado era bastante grande, así que decidí dividirlo en varias piezas pequeñas (1000 líneas cada una) - split --lines=1000 "$FILENAME" part- - split --lines=1000 "$FILENAME" part-

  2. Finalmente itere sobre estos pequeños archivos, hice algunos reemplazos de texto, y ejecuté las piezas una por una contra el servidor MS SQL:

export SQLCMD=/opt/mssql-tools/bin/sqlcmd x=0 for file in part-* do echo "Exporting file [$file] into MS SQL. $x thousand(s) processed" # replaces /' with '''' sed -i "s////'/''''/g" "$file" # removes all " sed -i ''s/"//g'' "$file" # allows to insert records with specified PK(id) sed -i "1s/^/SET IDENTITY_INSERT $TABLE ON;/n/" "$file" "$SQLCMD" -S "$AZURE_SERVER" -d "$AZURE_DB" -U "$AZURE_USER" -P "$AZURE_PASS" -i "$file" echo "" echo "" x=$((x+1)) done echo "Done"

Por supuesto, deberás reemplazar mis variables como $AZURE_SERVER , $TABLE , etc.

Espero que ayude.


Si realiza una exportación con PhpMyAdmin , puede cambiar el modo de compatibilidad sql a ''MSSQL''. De esta forma, solo ejecuta el script exportado contra su base de datos MS SQL y listo.

Si no puede o no quiere usar PhpMyAdmin, también hay una opción de compatibilidad en mysqldump , pero personalmente prefiero que PhpMyAdmin lo haga por mí.



Te sugiero que uses mysqldump así:

mysqldump --compatible=mssql

phpMyAdmin sigue siendo una aplicación web y podría tener algunas limitaciones para grandes bases de datos (tiempo de ejecución de scripts, memoria asignable, etc.).


Usar el Asistente de migración de SQL Server (SSMA)

Además de MySQL, es compatible con Oracle, Sybase y MS Access.

Parece ser bastante inteligente y capaz de manejar incluso transferencias no triviales. También tiene alguna interfaz de línea de comandos (además de GUI) por lo que teóricamente puede integrarse en algún proceso de carga por lotes.

Este es el enlace de descarga actual para la versión de MySQL http://www.microsoft.com/en-us/download/details.aspx?id=42657

La versión estable actual (junio de 2016) 6.0.1 se bloquea con el controlador ODBC MySQL actual (5.3.6) mientras se transfieren los datos. Todo 64 bit. La versión 5.3 con el controlador ODBC 5.1.13 funciona bien.