segunda-feira, 27 de agosto de 2012

Exportando e importando dados do mySQL por linha de comando


1 - Basicamente fazendo o dump
shell~# mysqldump -u usuario -p meubancodedados -h localhost
Parâmetros:
  • -u  usuario = nome de usuário com permissão no banco
  • -p = pedir senha
  • -h localhost = ip ou dominio onde se encontra o seu banco mySQL
  • meubancodedados = nome do banco de dados que você quer dar o dump
Se tudo sair conforme esperado o mysqldump vai cuspir todo o conteudo do banco de dados, e se quiser colocar esse conteúdo dentro de um arquivo basta adicionar o "> meu_dump.sql" do final da instrução.
 shell~# mysqldump -u usuario -p bancodedados -h localhost > meu_dump.sql
2 - Restaurando um banco mySQL
Um pouco de atenção agora pois é nessa parte em que muitos se enganam. No momento em que fazemos um dump de um banco usamos o mysqldump e quando queremos restaurar esse dump usamos o ....... ? mysql !
Muitas das pessoas que fizeram testes para o cargo citado a cima utilizaram o mysqldump para importar os dados, e encontraram muitas referencias da utilização do mesmo para restaurar. Mas não funciona, pelo menos não na versão do mySQL 5 que usamos. :)
Segue abaixo a linha para restaurar o banco:
 shell~# mysql -u usuario -p bancodedados_2 -h localhost < meu_dump.sql
Vale lembrar que é necessário que você crie o bancodedados_2, dê as devidas permissões para o usuario antes de executar essa instrução.
3 - Atenção as setas!
Quando é feito o mysqldump e queremos salvar as informações em um arquivo de texto utilizamos o sinal de maior ">", já quando queremos importar os dados para o mySQL utilizando o mysql usamos a seta inversa ou senha o sinal de menor "<".

sábado, 25 de agosto de 2012

Redirecionamento 301 em PHP, ASP, ASP .NET, JSP (JAVA), Coldfusion, Ruby on Rails, CGI(Perl) e .htaccess


Muitas vezes no desenvolvimento de um website queremos mudar uma página de diretório ou até mesmo trocar o nome dela. Isto é bem simples quando se trata do nível operacional: renomeamos o arquivo ou ainda movemos de diretório simplesmente. Infelizmente não podemos pensar como no nosso computador pessoal. Não basta apenas renomear ou mover o arquivo, você deve editar todas as referências que ele recebe.
A referência na web é a base dos algoritmos de rankeamento, como o Pagerank, sendo assim, pode existir um conjunto grande de páginas que apontam(links) para este seu arquivo ou pasta, os quais não vão saber que o seu arquivo mudou. Assim como estes links, os robôs de busca não saberão que a página foi renomeada ou movida.
Desta forma, necessitamos de um método que indique que a sua página A foi renomeada ou movida para a página B. Este método é chamado de redirecionamento.
Vimos que o código 301 indica que a sua página foi “movida permanentemente”, ou seja, ela foi renomeada ou movida para um novo local de forma definitiva.
Vejamos abaixo a aplicação do redirecionamento para as linguagens PHP, ASP, htaccess, Coldfusion e Ruby on Rails:

Script de redirecionamento de paginas


Este recurso é útil, por exemplo, caso seu site tenha mudado de endereço. No endereço antigo você pode colocar uma mensagem informando da mudança e ao mesmo tempo definir um redirecionamento, que leve o visitante ao novo endereço: se ele não clicar em nada, é levado automaticamente.
Você pode utilizar um método html, aceito na maioria dos navegadores. Veja:

<META HTTP-EQUIV=Refresh CONTENT="3; URL=http://www.viamep.com">

Insira esse código dentro do cabeçalho da página. Em CONTENT=3 quer dizer que 3 segundos após esta página ter sido carregada, a URL definida será aberta. Você pode colocar o nome de um arquivo, não precisa ser necessariamente um endereço completo.
Se preferir utilizar JavaScript, geralmente é executado de forma mais rápida, sem precisar contar determinado número de segundos. Basta colocar na página, de preferência logo no começo:

<script language="JavaScript">
top.location = 'http://www.viamep.com';
</script>

Caso a página esteja num frame, troque 'top' por 'self', para que a nova página seja carregada no mesmo quadro:

<script language="JavaScript">
self.location = 'http://www.viamep.com';
</script>

Se você preferir, da forma mais completa, pode definir top.location.href, em vez de apenas top.location.
Mas não pára por aí... Para redirecionamento o ideal é usar o método "replace" da propriedade "location", do objeto "window". Simples:

<script language="JavaScript">
window.location.replace('http://www.viamep.net');
</script>

Porque esse é o melhor?
- Ao usar o método em HTML, alguns navegadores podem ingorá-lo, e a tela ficar parada.
- Substituir a URL "carregando" outra página, definindo pelo "top.location...", faz com que a página anterior (a que chama o redirecionamento) fique no histórico, e seja acessível portanto pelo botão "Voltar" do navegador. Isso complica para o usuário, que pode clicar em voltar e imediatamente ser remetido à página redirecionada, afinal ao voltar um nível será a página que manda redirecionar que será aberta - e, claro, mandará redirecionar de novo.
Usando o método "replace", a URL atual é "substituída" realmente pela nova, de modo que a página que contém o código do redirecionamento não fique na lista do "Voltar". O endereço, no entanto, será o da página carregada, atualizado automaticamente na barra de endereços.
Pensando nos diferentes navegadores e sistemas operacionais, eu uso três ou quatro métodos:

<META HTTP-EQUIV=Refresh CONTENT="1; URL=pagina.htm">
<script language="JavaScript">
window.location.replace('pagina.htm');
self.location = 'pagina.htm';
</script>
<a href=pagina.htm>Clique aqui</a> se não estiver carregando automaticamente...

O link comum garante o acesso a página caso o navegador seja muito antigo, ou esteja com o JavaScript desativado. Saiba que colocar o tempo "0" (zero) no "meta... refresh" pode fazer com que o redirecionamento seja ignorado pelo navegador.
Uma outra boa situação para aplicar isso é nas pastas do seu site que contém alguns arquivos, mas não uma página inicial. Assim, se alguém entrar na pasta, será redirecionado para outro lugar, em vez de ver uma listagem com os arquivos da pasta (comum na configuração padrão do Apache).