<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>idealMind &#187; executar arquivos sql</title>
	<atom:link href="http://blog.idealmind.com.br/tag/executar-arquivos-sql/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.idealmind.com.br</link>
	<description>Soluções que facilitam a sua vida</description>
	<lastBuildDate>Mon, 26 Dec 2011 00:11:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Como executar vários arquivos sql em um comando único pelo CMD do windows</title>
		<link>http://blog.idealmind.com.br/mysql/como-executar-varios-arquivos-sql-em-um-comando-unico-pelo-cmd-do-windows/</link>
		<comments>http://blog.idealmind.com.br/mysql/como-executar-varios-arquivos-sql-em-um-comando-unico-pelo-cmd-do-windows/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 03:30:23 +0000</pubDate>
		<dc:creator>Wellington Ribeiro</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[bat]]></category>
		<category><![CDATA[cmd]]></category>
		<category><![CDATA[criar banco de dados]]></category>
		<category><![CDATA[executar arquivos sql]]></category>
		<category><![CDATA[importar dados]]></category>
		<category><![CDATA[linha de comando]]></category>
		<category><![CDATA[prompt]]></category>

		<guid isPermaLink="false">http://blog.idealmind.com.br/?p=34</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Olá!</p>
<p>Hoje vou mostrar para você uma maneira fácil e rápida para <strong>rodar vários arquivos sql em um servidor mysql através de um único comando</strong>, através do prompt de comando do windows (cmd).</p>
<p>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.</p>
<p>Então vamos lá!</p>
<p>Primeiro vamos criar um novo banco para o exemplo, chamado <em>meubanco</em>:</p>
<pre class="brush: sql; title: ; notranslate">
DROP DATABASE IF EXISTS `meubanco`;
CREATE DATABASE `meubanco`;
</pre>
<p>Salve este arquivo, por exemplo, em C:\dados\meubanco\meubanco.sql (use um editor como o notepad para salvar).</p>
<pre class="brush: sql; title: ; notranslate">
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;
</pre>
<p>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).</p>
<p>Agora vamos inserir alguns dados nas tabelas:</p>
<pre class="brush: sql; title: ; notranslate">

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());
</pre>
<p>Salve este arquivo, por exemplo, em C:\dados\meubanco\meubanco_dados.sql .</p>
<p>Agora suponhamos que você tenha feito a seguinte alteração na estrutura:</p>
<pre class="brush: sql; title: ; notranslate">

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`);
</pre>
<p>Salve este arquivo, por exemplo, em C:\dados\meubanco\meubanco_alteracao.sql, na mesma pasta que os outros.</p>
<p>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).</p>
<p>Voltando ao exemplo, abra o prompt de comando do windows (Iniciar =&gt; Executar =&gt; cmd), e teste se você consegue executar o mysql de qualquer pasta:</p>
<div style="background:#000; padding:10px 5px; color:#CCC; font:bold 12px 'Lucida Console', System;">C:\Documents and Settings\usuario&gt;mysql &#8211; u root</div>
<p>Se você usa senha, use -p no final do comando. Verifique se sua tela ficou parecida com a tela abaixo:</p>
<div style="background:#000; padding:10px 5px; color:#CCC; font:bold 12px 'Lucida Console', System;">C:\Documents and Settings\usuario&gt;mysql -u root<br />
Welcome to the MySQL monitor.  Commands end with ; or \g.<br />
Your MySQL connection id is 26<br />
Server version: 5.1.32-community MySQL Community Server (GPL)Type &#8216;help;&#8217; or &#8216;\h&#8217; for help. Type &#8216;\c&#8217; to clear the buffer.<br />
mysql&gt;</div>
<p>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<strong> Painel de controle</strong> e abra<strong> Sistema</strong> (ou tecle simultaneamente a tecla com o logo do windows e a tecla Pause Break). Vá na guia <strong>Avançado</strong> e clique em <strong>Variáveis de Ambiente</strong>. Na janela que abre, selecione <strong>Path</strong> em <strong>Variáveis do sistema</strong> e clique em <strong>Editar</strong>. Na nova janela que abrir, em <strong>Valor da variável</strong>, 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 ;. <strong>Salve e dê ok</strong> 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:</p>
<div style="background:#000; padding:10px 5px; color:#CCC; font:bold 12px 'Lucida Console', System;">mysql&gt; exit<br />
Bye</p>
<p>C:\Documents and Settings\usuario&gt;cd C:\dados\meubanco</p>
<p>C:\dados\meubanco&gt;</p>
</div>
<p>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:</p>
<pre class="brush: bash; title: ; notranslate">

@echo OFF
echo Criando o banco de dados...
mysql -u root &lt; meubanco.sql
echo Criando a estrutura de dados...
mysql -u root meubanco &lt; meubanco_estrutura.sql
echo Inserindo os dados...
mysql -u root meubanco &lt; meubanco_dados.sql
echo Alterando a estrutura...
 mysql -u root meubanco &lt; meubanco_alteracao.sql
echo Fim do Script!
</pre>
<p>Salve o arquivo como <strong>cria_meubanco.bat</strong>. Volte ao prompt do windows, digite cria_meubanco e voilá! Se tudo correu bem, você verá a tela abaixo:</p>
<div style="background:#000; padding:10px 5px; color:#CCC; font:bold 12px 'Lucida Console', System;">C:\dados\meubanco&gt;cria_meubanco</p>
<p>Criando o banco de dados&#8230;<br />
Criando a estrutura de dados&#8230;<br />
Inserindo os dados&#8230;<br />
Alterando a estrutura&#8230;<br />
Fim do Script!</p>
<p>C:\dados\meubanco&gt;</p>
</div>
<p>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.</p>
<p>Deixe seu comentário!</p>
<p>Até a próxima!<br />
<h3 class='related_post_title'>Posts Relacionados:</h3>
<ul class='related_post'>
<li><a href='http://blog.idealmind.com.br/mysql/como-criar-stored-procedures-e-funcoes-no-mysql/' title='Como criar stored procedures e funções no MySQL'>Como criar stored procedures e funções no MySQL</a></li>
<li><a href='http://blog.idealmind.com.br/mysql/mysql-workbench-mysql-administrator-e-mysql-query-browser/' title='MySQL Workbench, MySQL Administrator e MySQL Query Browser'>MySQL Workbench, MySQL Administrator e MySQL Query Browser</a></li>
</ul>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.idealmind.com.br/mysql/como-executar-varios-arquivos-sql-em-um-comando-unico-pelo-cmd-do-windows/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

