Banco de Dados

25 jan, 2013

Importando/exportando grandes bancos de dados MySQL

Publicidade

Recentemente, comecei um novo projeto na Sevilha Contabilidade. Por ser uma contabilidade que está há 25 anos no mercado, a base de dados dela é um pouco grande. Por isso, precisei procurar na Internet uma forma de exportar/importar o banco de dados deles para ter um ambiente de desenvolvimento local.

A maioria dos programadores utiliza o PHPMyAdmin para gerenciar as bases de dados MySQL. Essa ferramenta é excelente e muito boa, na minha opinião. Porém algumas operações que precisamos fazer no MySQL não podem ser realizadas pela interface do PHPMyAdmin. Uma delas é a importação/exportação de grandes bases de dados.

Abaixo seguem alguns comandos que utilizei para a importação/exportação dessa base de dados. Nos códigos abaixo, por favor, mude:

[USERNAME] pelo seu usuário do MySQL;
[DBNAME] pelo nome do banco de dados;
[/path_to_mysql/] pelo caminho até o executável do MySQL. (Se você usa o xampp: c:\xampp\mysql\bin )

Copiando/exportando uma base de dados

O MySQL não tem uma função de cópia. Para fazer uma cópia do banco de dados, você precisa realizar um DUMP do banco de dados. Para fazer isso, você pode usar o seguinte comando:

mysqldump -u [USERNAME] -p [DBNAME] | gzip > [/path_to_file/DBNAME].sql.gz

Isso pedirá sua senha e exportará em GZIP sua base de dados. Prefira fazer usando o GZIP e depois você descompacta o arquivo – fica bem mais rápido.

Importando uma base de dados grande

Para importar o banco, você precisa descompactar o arquivo. Para isso, utilize o WinRar, por exemplo, ou outro programa de que goste e que tenha a funcionalidade de descompactar esse tipo de arquivo, ou faça desta forma aqui:

gzip -d [/path_to_file/DBNAME].sql.gz

O resultado disso será o script .sql. Com posse do script, execute o seguinte comando que solicitará a senha do usuário:

[/path_to_mysql/]mysql -u [USERNAME] -p

Após ter logado com sucesso, execute os seguintes comandos:

SHOW DATABASES;
DROP DATABASE [DBNAME];
CREATE DATABASE [DBNAME];
USE [DBNAME];
SOURCE [/path_to_file/DBNAME].sql;

Observações

Este artigo é uma tradução/outra versão deste: http://www.lullabot.com/blog/importexport-large-mysql-databases
No artigo original, tem mais um item, que é o DUMP Condicional. Eu não coloquei neste artigo para deixá-lo mais simples, mas, se quiser, acesse o artigo original e leia sobre isso.