Oferta Nacional - 234x60

Arquivo

Textos com Etiquetas ‘bat’

Como executar vários arquivos sql em um comando único pelo CMD do windows

24, setembro, 2009 3 comentários
Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

Olá!

Hoje vou mostrar para você uma maneira fácil e rápida para rodar vários arquivos sql em um servidor mysql através de um único comando, através do prompt de comando do windows (cmd).

A necessidade surgiu devido a uma reestruturação do banco de dados, onde vários arquivos sql são responsáveis pela criação e importação de dados, criação de novas tabelas, alteração da estrutura de tabelas dentre outras coisas. Era muito chato a cada alteração ou testes de um dos arquivos ter que apagar o banco, recriar e rodar todos os arquivos um por um.

Então vamos lá!

Primeiro vamos criar um novo banco para o exemplo, chamado meubanco:

DROP DATABASE IF EXISTS `meubanco`;
CREATE DATABASE `meubanco`;

Salve este arquivo, por exemplo, em C:\dados\meubanco\meubanco.sql (use um editor como o notepad para salvar).

CREATE TABLE  `tabela1` (
  id INT(11) NOT NULL AUTO_INCREMENT,
  descricao VARCHAR(45) NOT NULL,
  data DATETIME,
  PRIMARY KEY id,
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE  `tabela2` (
  id INT(11) NOT NULL AUTO_INCREMENT,
  descricao VARCHAR(45) NOT NULL,
  data DATETIME,
  PRIMARY KEY id,
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Salve este arquivo, por exemplo, em C:\dados\meubanco\meubanco_estrutura.sql (para tornar mais fácil o processo, salve todos os arquivos sql na mesma pasta).

Agora vamos inserir alguns dados nas tabelas:


INSERT INTO tabela1 (descricao,data) VALUES
('Esta é a linha 1 da tabela 1','2009-09-16 13:45:12'),
('Esta é a linha2 da tabela 1',now()),
('Esta é a linha 3 da tabela 1',now()),
('Esta é a linha 4 da tabela 1',now());

INSERT INTO tabela2 (descricao,data) VALUES
 ('Esta é a linha 1 da tabela 2','2009-09-23 23:12:30'),
 ('Esta é a linha2 da tabela 2',now()),
 ('Esta é a linha 3 da tabela 2',now()),
 ('Esta é a linha 4 da tabela 2',now());

Salve este arquivo, por exemplo, em C:\dados\meubanco\meubanco_dados.sql .

Agora suponhamos que você tenha feito a seguinte alteração na estrutura:


ALTER TABLE `tabela1` ADD COLUMN `usuario` INT(11) , ADD INDEX `ix_usuario`(`usuario`);

ALTER TABLE `tabela2` ADD COLUMN `id_tabela1` INT(11) , ADD INDEX `ix_id_tabela1`(`id_tabela1`);

Salve este arquivo, por exemplo, em C:\dados\meubanco\meubanco_alteracao.sql, na mesma pasta que os outros.

Este exemplo é bem simples perto da real necessidade de se rodar vários arquivos sql, mas serve apenas para ilustrar uma situação em que realmente exista esta necessidade (como foi o meu caso, onde várias pessoas fizeram várias alterações em partes diferentes da estrutura de dados, e era necessário reestruturar o banco algumas vezes no mesmo dia, e várias vezes para testar localmente para não correr risco de perder os dados existentes no servidor live).

Voltando ao exemplo, abra o prompt de comando do windows (Iniciar => Executar => cmd), e teste se você consegue executar o mysql de qualquer pasta:

C:\Documents and Settings\usuario>mysql – u root

Se você usa senha, use -p no final do comando. Verifique se sua tela ficou parecida com a tela abaixo:

C:\Documents and Settings\usuario>mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 26
Server version: 5.1.32-community MySQL Community Server (GPL)Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql>

Se você não conseguiu, você terá de setar o caminho para o mysql como uma variável de ambiente do windows. Para isso, entre no Painel de controle e abra Sistema (ou tecle simultaneamente a tecla com o logo do windows e a tecla Pause Break). Vá na guia Avançado e clique em Variáveis de Ambiente. Na janela que abre, selecione Path em Variáveis do sistema e clique em Editar. Na nova janela que abrir, em Valor da variável, acrescente o caminho para o mysql (no meu caso, C:\Arquivos de programas\MySQL\MySQL Server 5.1\bin). Certifique-se de que exista um ; separando o caminho que você acrescentou e os que já existiam, e que não existem espaços em branco antes e depois de ;. Salve e dê ok nas janelas. Pronto. Feche o cmd e tente novamente. Se conseguir, de exit para voltar a pasta e vá até a pasta dos arquivos sql:

mysql> exit
Bye

C:\Documents and Settings\usuario>cd C:\dados\meubanco

C:\dados\meubanco>

Agora vamos criar o arquivo *.bat que fará a execução dos scripts sqls. Abra o bloco de notas ou seu editor preferido, e digite nele:


@echo OFF
echo Criando o banco de dados...
mysql -u root < meubanco.sql
echo Criando a estrutura de dados...
mysql -u root meubanco < meubanco_estrutura.sql
echo Inserindo os dados...
mysql -u root meubanco < meubanco_dados.sql
echo Alterando a estrutura...
 mysql -u root meubanco < meubanco_alteracao.sql
echo Fim do Script!

Salve o arquivo como cria_meubanco.bat. Volte ao prompt do windows, digite cria_meubanco e voilá! Se tudo correu bem, você verá a tela abaixo:

C:\dados\meubanco>cria_meubanco

Criando o banco de dados…
Criando a estrutura de dados…
Inserindo os dados…
Alterando a estrutura…
Fim do Script!

C:\dados\meubanco>

Pronto! Você acabou de criar um arquivo em lotes executável pelo prompt do windows, que poderá te poupar muito tempo no seu dia a dia de desenvolvedor.

Deixe seu comentário!

Até a próxima!

Posts Relacionados:

SEO Powered by Platinum SEO from Techblissonline