Importar base de dados MySQL em localhost

O modo mais fácil de importar um arquivo .sql para o seu banco de dados sempre foi via PHPMyAdmin, entretanto com arquivos pesados sempre encontramos erros ou temos que subdividir os arquivos em importações menores, o que também gera problemas pois algumas tabelas que contém dependências ou chaves estrangeiras acusam diversos erros na importação.

Um modo mais simples que descobri recentemente é a partir de um comando muito simples no terminal mysql.

Pegue o seu arquivo .sql e salve em alguma pasta como desktop por exemplo, mas grave bem o caminho.

Acesse via terminal o seu banco de dados MySQL

mysql -u***** -p;

Crie o banco de dados que você importará o arquivo .sql

mysql > create database exemplo_xpto;

Abra a base de dados

mysql > use exemplo_xpto;

Faça a importação por meio do comando:

mysql > source /Users/meu-usuario/Desktop/arquivo.sql

Lembrando que o endereço /Users[…]/arquivo.sql deve ser substituído pelo caminho no seu computador.

Pronto, verifique se não houve nenhum erro e a sua base já está completamente funcional.

Caso você use o XAMPP, eu li algumas observações dizendo que o seu arquivo tem que obrigatoriamente estar na pasta bin, dentro da pasta XAMPP, mas isso eu não testei.

Esse exemplo serve para importações locais. Para fazer o caminho inverso continue usando os comandos já conhecidos:

#Exportar
mysqldump -u**** -p**** nomedobanco > nomedobanco.sql

#Exportar o banco com bzip2
mysqldump -u**** -p**** nomedobanco | bzip2 > nomedobanco.sql.bz2

#Exportar o banco com gzip
mysqldump -u**** -p**** nomedobanco | gzip > nomedobanco.sql.gz

#Importar  (.sql)
mysql -u**** -p**** nomedobanco < nomedobanco.sql

 Referência

http://www.alexweber.com.br/artigos/mysql-como-exportar-importar-backups-pelo-terminal

Customizando a query para buscar todos os dados do usuário no WordPress

O WordPress conta com ferramentas muito boas para administrar os usuários e permite que você estenda o formulário infinitamente. Entretanto, quando falamos em resgatar estes dados fora do WordPress, para exportar para uma base excel por exemplo, fica complicado pois como as informações não ficam em colunas nas tabelas, ou você cria uma query que vai te retornar linha a linha as meta keys duplicando todos os dados da tabela users ou utiliza um código externo redundante em PHP que vai sobrecarregar o seu servidor e obrigá-lo a rever o timeout da aplicação ou ainda pior, terá que gerar um plugin só para utilizar as funções do WordPress e te retornar estes dados e que também pode vir a dar problema de timeout.

Então qual a solução mais rápida? Extrair estes dados diretamente da sua base MySQL, utilizando o concatenamento de tabelas por meio da função JOIN do SQL.

SELECT
  u1.id,
  u1.user_email,
  u1.user_pass,
  u1.user_email,

  m1.meta_value AS firstname,
  m2.meta_value AS lastname,
  m3.meta_value AS birthday
  [...]
FROM 
  wp_users u1 
JOIN 
  wp_usermeta m1 ON (m1.user_id = u1.id AND m1.meta_key = 'first_name') 
JOIN 
  wp_usermeta m2 ON (m2.user_id = u1.id AND m2.meta_key = 'last_name') 
JOIN 
  wp_usermeta m3 ON (m3.user_id = u1.id AND m3.meta_key = 'birthday')
  [...]
WHERE
  [...]

Muito mais simples, não?

Adicionando MySQL do MAMP ou XAMPP via linha de comando no Terminal do Mac

Apesar de termos o PHPMyAdmin como excelente ferramenta de gerenciamento do MySQL, existem algumas facilidades quando trabalhamos com o MySQL via linha de comando.

Por exemplo, para fazer ou restaurar backup de uma base de dados é muito mais rápido via linha de comando do que exportando o arquivo pelo PHPMyAdmin e reimportando pelo mesmo. Sem contar que dependendo do tamanho do arquivo podem ocorrer erros na importação e corromper os dados.

Para este tipo específico de problema, resolvi então buscar uma forma mais prática para usar o MySQL instalado pelo MAMP (ou XAMPP) na linha de comando do terminal.

Os resultados que mostro abaixo foram baseados no artigo “Command line MySQL not working with XAMPP” do site http://www.aschroder.com/2009/03/how-to-use-the-mamp-mysql-command-line-client-in-a-terminal/.

Abra o terminal, crie um diretório na raiz chamado bin e acesse.

mkdir ~/bin
cd ~/bin

Crie um atalho para a aplicação

ln -s /Applications/MAMP/Library/bin/mysql mysql

Para usar o XAMPP no lugar do MAMP é só substituir o atalho da aplicação pelo endereço do XAMPP no seu sistema. Abra o arquivo ~/.bash_profile, pode ser usando o comando PICO e VI do terminal ou como eu prefiro, usando o aplicativo TextWrangler. Se houver alguma linha escrita neste arquivo, adicione na linha seguinte:

export PATH=$PATH:/Users/__usuario__/bin/

Caso contrário digite:

export PATH=/Users/__usuario__/bin/:$PATH

Lembrando de trocar o termo __usuario__ pelo seu nome de usuario do sistema. Salve o arquivo, volte ao terminal e teste digitando:

echo $PATH

Verifique o atalho com:

ls -la ~/bin

E verifique qual endereço do MySQL está rodando no seu sistema com:

which mysql

Pronto, a partir de agora para acessar o mysql é só digitar no terminal:

mysql

E o prompt de comando já será alterado para responder ao MySQL.

Como fazer backup da base de dados MySQL via SSH

Faça o acesso ao seu servidor conforme descrito no Acessando o servidor via SSH.

Digite o seguinte comando no Terminal:

mysqldump -h endereco_host -u login -p -R --opt nome_banco_dados > arquivo.sql

Caso opte por fazer o backup apenas de uma tabela coloque o nome da tabela logo após nome_bd

mysqldump -h endereco_host -u login -p -R --opt nome_banco_dados nome_tabela> arquivo.sql

Se houver problemas de acentuação acrescente este parâmetro logo após –opt

mysqldump -h endereco_host -u login -p -R --opt --default-character-set=latin1  nome_banco_dados > arquivo.sql