Pergunta

Atualmente tenho um banco de dados em MySQL, que gostaria de importar no MS Access.

É possível fazer isso mantendo todos os relacionamentos intactos (ou seja, sem exportar para .csv ou usando ODBC)?

Eu sou um novato nesta área, então qualquer ajuda é muito apreciada.

Obrigado.

Foi útil?

Solução

Você precisa resolver dois problemas diferentes:

  1. Criação de um banco de dados MS Access vazio com uma estrutura que corresponda à estrutura do banco de dados MySQL.

  2. Extrair os dados do MySQL e carregá-los no MS Access.

Isso não é fácil porque diferentes bancos de dados SQL oferecem diferentes recursos estruturais, diferentes tipos de dados e assim por diante. Quanto mais complexo for o uso do MySQL, maior será a probabilidade de você se deparar com algum obstáculo durante a conversão (por exemplo, o Access não oferece suporte a gatilhos). Por outro lado, se você estiver usando o MySQL como um armazenamento de dados simples, poderá achar a conversão bastante fácil.

Para obter um banco de dados MS Access com a mesma estrutura de seu banco de dados MySQL, sua melhor aposta é encontrar uma ferramenta de definição / diagramação de banco de dados que ofereça engenharia reversa e suporte MySQL e MS Access. Use-o para fazer engenharia reversa de seu banco de dados MySQL em um diagrama de banco de dados, depois mude o banco de dados subjacente para MS Access e use a ferramenta para gerar um banco de dados.

Confira Dezign para bancos de dados que (no papel, pelo menos) oferece os recursos de que você precisa faça isso.

Para bombear os dados, existem inúmeras ferramentas. Esse tipo de operação é genericamente conhecido como ETL (Extract, Translate, Load).

Outras dicas

Você quer dizer SQL Server?Um bom ponto de partida pode ser verificar o SQL Server Integration Services (SSIS), que pode ser usado para transferir dados dessa forma.

O Google também será útil, verifique o primeiro resultado:

http://support.microsoft.com/kb/237980

A propósito, você disse ".sql" em sua pergunta: um arquivo .SQL é um arquivo de script, que pode fazer qualquer coisa, desde criar um banco de dados, inserir dados, excluir tabela, excluir dados ou receber as permissões corretas,chamar procedimentos do sistema e reiniciar uma máquina, formatar uma unidade, enviar um e-mail .. Apenas para referência, os arquivos .SQL não são o formato de armazenamento usado pelo SQL Server.

Embora você possa fazer o script do esquema do seu banco de dados em arquivos de script por meio de algo como SQLyog, você descobrirá que a sintaxe varia o suficiente de banco de dados para banco de dados (MySQL para Access, no seu caso) de forma que você não pode aplicar os scripts diretamente.

Com muito esforço, um script de conversão pode ser criado editando o script (talvez automatizado com um programa, dependendo do tamanho do script resultante).Acho que seria melhor usar o ODBC para copiar as tabelas (e dados) e, em seguida, extrair e reaplicar os relacionamentos do script gerado manualmente.Demorado, mas também uma operação única, espero.

Quando os dois sistemas são o mesmo banco de dados, existem ferramentas que podem fazer a comparação e geração de script (TOAD para MySQL e RedGate Compare para Microsoft SQL), mas não funcionam entre bancos de dados (pelo menos não aqueles que euconheço).

Se você criar um ODBC DSN, poderá usar TransferDatabase para importar de seu banco de dados MySQL.Você pode fazer isso manualmente com o comando GET EXTERNAL DATA (ou o que quer que seja em A2007 / A2010) e ver como funciona bem.Não vai conseguir todos os tipos de dados exatamente corretos, mas você pode fazer alguma massagem e provavelmente chegar mais perto do que funcionará melhor.

Existe algum motivo pelo qual você não pode simplesmente vincular as tabelas do MySQL e usá-las diretamente?Ou seja, por que você precisa importar para o Access?

Você pode tentar usar isto: Convertendo MS Accesspara MySQL com relacionamentos

Funciona bem e exporta todos os relacionamentos.

Acesso: executar consulta.Apenas certifique-se de adaptar o código SQL, pois cada RDMS tem sua própria sintaxe (apesar de SQL ser um padrão ANSI).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top