Eu tenho um arquivo .sql de um despejo do MySQL contendo tabelas, definições e dados a serem inseridos nessas tabelas. Como posso converter este banco de dados representado no arquivo de despejo em um banco de dados MS SQL Server?
mysql
sql-server
mysqldump
marionmaiden
fonte
fonte
Respostas:
Use o SQL Server Migration Assistant (SSMA)
Além do MySQL, ele oferece suporte a Oracle, Sybase e MS Access.
Parece ser bastante inteligente e capaz de lidar até com transferências não triviais. Ele também tem alguma interface de linha de comando (além da GUI), portanto, teoricamente, pode ser integrado a algum processo de carregamento em lote.
Este é o link de download atual para a versão MySQL https://www.microsoft.com/en-us/download/details.aspx?id=54257
A versão estável 6.0.1 atual (junho de 2016) falha com o driver ODBC MySQL atual (5.3.6) durante a transferência de dados. Tudo de 64 bits. A versão 5.3 com o driver ODBC 5.1.13 funciona bem.
fonte
Eu sugiro que você use o mysqldump assim:
mysqldump --compatible=mssql
phpMyAdmin ainda é um aplicativo da web e pode ter algumas limitações para bancos de dados grandes (tempo de execução de script, memória alocável e assim por diante).
fonte
Eu encontrei um jeito para isso na net
Exige um pouco de trabalho, porque tem que ser feito mesa a mesa. Mas de qualquer maneira, eu poderia copiar as tabelas, dados e restrições em um banco de dados MS SQL.
Aqui está o link
http://www.codeproject.com/KB/database/migrate-mysql-to-mssql.aspx
fonte
Se você fizer uma exportação com PhpMyAdmin , poderá alternar o modo de compatibilidade sql para 'MSSQL'. Dessa forma, você apenas executa o script exportado em seu banco de dados MS SQL e pronto.
Se você não pode ou não deseja usar o PhpMyAdmin, há também uma opção de compatibilidade no mysqldump , mas pessoalmente prefiro que o PhpMyAdmin faça isso por mim.
fonte
Aqui está minha abordagem para importar arquivos .sql para MS SQL:
Exportar tabela do MySQL com opções
--compatible=mssql
e--extended-insert=FALSE
:mysqldump -u [username] -p --compatible=mssql --extended-insert=FALSE db_name table_name > table_backup.sql
Divida o arquivo exportado com PowerShell por 300.000 linhas por arquivo:
$i=0; Get-Content exported.sql -ReadCount 300000 | %{$i++; $_ | Out-File out_$i.sql}
Execute cada arquivo no MS SQL Server Management Studio
Existem algumas dicas para acelerar as inserções .
Outra abordagem é usar a
–where
opção mysqldump . Usando esta opção, você pode dividir sua tabela em qualquer condição que seja suportada pelawhere
cláusula sql.fonte
--databases [db_name]
palavra-chave conforme explicada nesta resposta: stackoverflow.com/a/26096339/155687Tive um problema muito semelhante hoje - precisei copiar uma grande tabela (5 milhões de linhas) do MySql para o MS SQL.
Aqui estão as etapas que executei (no Ubuntu Linux):
Criou uma tabela em MS SQL cuja estrutura coincide com a tabela de origem no MySql.
Linha de comando MS SQL instalada: https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-tools#ubuntu
Tabela descartada do MySql para um arquivo:
No meu caso, o arquivo de despejo era muito grande, então decidi dividi-lo em várias partes pequenas (1000 linhas cada) -
split --lines=1000 "$FILENAME" part-
Finalmente, eu iterou sobre esses pequenos arquivos, fiz algumas substituições de texto e executei as partes uma a uma no servidor MS SQL:
Claro que você vai precisar para substituir meus variáveis como
$AZURE_SERVER
,$TABLE
, etc com o seu.Espero que ajude.
fonte
Para mim, funcionou melhor exportar todos os dados com este comando:
--extended-insert = FALSE é necessário para evitar o limite de importação de 1000 linhas de mssql.
Criei minhas tabelas com minha ferramenta de migração, então não tenho certeza se o CREATE do arquivo backup.sql funcionará.
No SSMS do MSSQL, tive que importar os dados tabela por tabela com o IDENTITY_INSERT ON para escrever os campos de ID:
Se você tiver relacionamentos, terá que importar primeiro o filho e depois a tabela com a chave estrangeira.
fonte
Você também pode usar 'ODBC' + 'Assistente de importação e exportação do SQL Server'. O link abaixo o descreve: https://www.mssqltips.com/sqlservertutorial/2205/mysql-to-sql-server-data-migration/
fonte
Corre:
Você quer ver uma barra de processo?
fonte