Como exportar dados do SQL Server 2005 para MySQL [fechado]

86

Tenho batido minha cabeça contra a SQL Server 2005tentativa de obter muitos dados. Recebi um banco de dados com quase 300 tabelas e preciso transformá-lo em um banco de dados MySQL. Minha primeira chamada foi usar bcp, mas infelizmente ele não produz um CSV válido - as strings não são encapsuladas, então você não pode lidar com qualquer linha que tenha uma string com uma vírgula (ou o que quer que você use como delimitador) e eu ainda teria que escrever manualmente todas as instruções de criação da tabela, já que, obviamente, CSV não informa nada sobre os tipos de dados.

O que seria melhor é se houvesse alguma ferramenta que pudesse se conectar ao SQL Server e ao MySQL e, em seguida, fazer uma cópia. Você perde views, stored procedures, trigger, etc, mas não é difícil copiar uma tabela que só usa tipos base de um DB para outro ... não é?

Alguém conhece tal ferramenta? Não me importo com quantas suposições ele faz ou quais simplificações ocorrem, desde que suporte integer, float, datetime e string. Eu tenho que fazer muita poda, normalização, etc. de qualquer maneira, então não me importo em manter chaves, relacionamentos ou qualquer coisa assim, mas preciso do conjunto inicial de dados rápido!

Esteira
fonte
1
Já ouvi algumas pessoas usando o MSSQL2MySQL com sucesso, mas não posso garantir isso sozinho.
Greg Hurlman
1
Ouvi dizer que o SQLYob pode fazer isso. < webyog.com/en > aqui: < searchsqlserver.techtarget.com/tip/… >
borjab
Esta ferramenta é exatamente o que você pediu: Full Convert Enterprise . É verdade que você perde visualizações, procedimentos e gatilhos, mas é altamente otimizado para tabelas enormes. Outra solução (mais cara) que traduz todos os objetos (procedimentos etc.) é o SqlTran SQL Server para MySQL
Damir Bulic
1
Resposta semelhante aqui: stackoverflow.com/questions/11619177/…
Jacob
1
@borjab: SQLyog costumava funcionar com ODBC em versões anteriores, mas não funciona mais, portanto, não é uma opção para este trabalho.
BlaM

Respostas:

59

A melhor maneira que encontrei é o MySQL Migration Toolkit fornecido pelo MySQL. Usei-o com sucesso para alguns grandes projetos de migração.

Nick Berardi
fonte
2
+1 - Agora é EOL, e o MySQL Workbench vai incluir um plugin de migração (versão anterior 5.2), mas por enquanto use o seguinte link: dev.mysql.com/downloads/gui-tools/5.0.html
Mark Robinson
não deseja converter colunas DATE ou DATETIME :(
Robert Ivanc
1
Nota: Atualmente, o MySQL Migration Toolkit não está disponível para Linux (em dev.mysql.com/doc/migration-toolkit/en/… )
mkirk
1
Observe que o My SQL Migration Toolkit requer a versão de 32 bits do JDK 5 atualização 8 ou posterior (deve ser a versão 5, a versão 6 não funcionará), que você pode baixar aqui: tinyurl.com/5snd6y3
casterle
9

Usando o MSSQL Management Studio, fiz a transição de tabelas com o MySQL OLE DB. Clique com o botão direito em seu banco de dados e vá para "Tarefas-> Exportar Dados" a partir daí você pode especificar uma fonte MsSQL OLE DB, a fonte MySQL OLE DB e criar os mapeamentos de coluna entre as duas fontes de dados.

Você provavelmente desejará configurar o banco de dados e as tabelas com antecedência no destino do MySQL (a exportação desejará criar as tabelas automaticamente, mas isso geralmente resulta em falha). Você pode criar rapidamente as tabelas no MySQL usando "Tasks-> Generate Scripts" clicando com o botão direito no banco de dados. Assim que seus scripts de criação forem gerados, você precisará percorrer e pesquisar / substituir palavras-chave e tipos que existem no MSSQL para MYSQL.

Claro que você também pode fazer backup do banco de dados normalmente e encontrar um utilitário que irá restaurar o backup do MSSQL no MYSQL. Não tenho certeza se existe um no entanto.


fonte
9

As edições "Standard", "Developer" e "Enterprise" do SQL Server 2005 têm SSIS , que substituiu o DTS do SQL server 2000. O SSIS tem uma conexão interna com seu próprio banco de dados e você pode encontrar uma conexão para a qual outra pessoa escreveu MySQL. Aqui está um exemplo. Depois de ter suas conexões, você deve ser capaz de criar um pacote SSIS que move dados entre os dois.

Não preciso mover dados do SQLServer para o MySQL, mas imagino que, uma vez que a conexão do MySQL seja instalada, funcione da mesma forma que mover dados entre dois bancos de dados SQLServer, o que é bastante simples.

Sean
fonte
8

Rodar sua própria solução PHP certamente funcionará, embora eu não tenha certeza se existe uma boa maneira de duplicar automaticamente o esquema de um banco de dados para o outro (talvez esta seja a sua pergunta).

Se você está apenas copiando dados e / ou precisa de código customizado de qualquer maneira para converter entre os esquemas modificados entre os dois bancos de dados, eu recomendaria usar o PHP 5.2+ e as bibliotecas PDO. Você será capaz de se conectar usando PDO ODBC (e usar drivers MSSQL). Tive muitos problemas para obter grandes campos de texto e caracteres multibyte de MSSQL para PHP usando outras bibliotecas.

pix0r
fonte
6

Outra ferramenta a ser tentada seria o pacote SQLMaestro . É um pouco complicado definir a ferramenta precisa, mas eles têm uma variedade de ferramentas, tanto gratuitas quanto para compra, que lidam com uma ampla variedade de tarefas para várias plataformas de banco de dados. Eu sugiro tentar a ferramenta Data Wizard primeiro para MySQL, pois acredito que terá a ferramenta de "importação" adequada de que você precisa.

Dillie-O
fonte