<?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>Battisti - Blog &#187; Postgre</title>
	<atom:link href="http://battisti.etc.br/category/sql/postgre/feed/" rel="self" type="application/rss+xml" />
	<link>http://battisti.etc.br</link>
	<description>Tecnologia, Web e um pouco de cultura inútil</description>
	<lastBuildDate>Fri, 27 Jan 2012 11:49:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>ERROR: cannot truncate a table referenced in a foreign key &#8211; Postgres</title>
		<link>http://battisti.etc.br/2009/12/03/error-cannot-truncate-a-table-referenced-in-a-foreign-key-postgres/</link>
		<comments>http://battisti.etc.br/2009/12/03/error-cannot-truncate-a-table-referenced-in-a-foreign-key-postgres/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 12:45:55 +0000</pubDate>
		<dc:creator>battisti</dc:creator>
				<category><![CDATA[Postgre]]></category>

		<guid isPermaLink="false">http://battisti.etc.br/?p=756</guid>
		<description><![CDATA[O postgres é um banco de dados relacional sendo assim o TRUNCATE não pode ser executado em uma tabela que seja referenciada por outra tabela através de uma chave estrangeira, então antes de executar o TRUNCATE você precisa desabilitar as TRIGGERS -- desativa as triggers UPDATE &#34;pg_class&#34; SET &#34;reltriggers&#34; = 0 WHERE &#34;relname&#34; = 'tabela'; [...]]]></description>
			<content:encoded><![CDATA[<div class="mwordstext"><p>O postgres é um banco de dados relacional sendo assim o TRUNCATE não pode ser executado em uma tabela que seja referenciada por outra tabela através de uma chave estrangeira, então antes de executar o TRUNCATE você precisa desabilitar as TRIGGERS</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span class="co1">-- desativa as triggers</span>
<span class="kw1">UPDATE</span> <span class="st0">&quot;pg_class&quot;</span> <span class="kw1">SET</span> <span class="st0">&quot;reltriggers&quot;</span> <span class="sy0">=</span> <span class="nu0">0</span> <span class="kw1">WHERE</span> <span class="st0">&quot;relname&quot;</span> <span class="sy0">=</span> <span class="st0">'tabela'</span>;
&nbsp;
<span class="co1">-- limpa a tabela</span>
<span class="kw1">TRUNCATE</span> tabela
&nbsp;
<span class="co1">-- reativa as triggers</span>
<span class="kw1">UPDATE</span> pg_class <span class="kw1">SET</span> reltriggers <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw1">SELECT</span> <span class="kw1">COUNT</span><span class="br0">&#40;</span><span class="sy0">*</span><span class="br0">&#41;</span> <span class="kw1">FROM</span> pg_trigger <span class="kw1">WHERE</span> pg_class<span class="sy0">.</span>oid <span class="sy0">=</span> tgrelid<span class="br0">&#41;</span> <span class="kw1">WHERE</span> relname <span class="sy0">=</span> <span class="st0">'tabela'</span>;</pre></div></div>

</div><!-- fim mwordstext -->]]></content:encoded>
			<wfw:commentRss>http://battisti.etc.br/2009/12/03/error-cannot-truncate-a-table-referenced-in-a-foreign-key-postgres/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alterar Quantidade de Caracteres Varchar Postgres</title>
		<link>http://battisti.etc.br/2009/12/03/alterar-quantidade-de-caracteres-varchar-postgres/</link>
		<comments>http://battisti.etc.br/2009/12/03/alterar-quantidade-de-caracteres-varchar-postgres/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 12:27:49 +0000</pubDate>
		<dc:creator>battisti</dc:creator>
				<category><![CDATA[Postgre]]></category>

		<guid isPermaLink="false">http://battisti.etc.br/?p=753</guid>
		<description><![CDATA[Caso você tenha uma coluna varchar e queira alterar a quantidade de caracteres que ela aceita utilize o seguinte: ALTER TABLE tabela ALTER COLUMN coluna TYPE VARCHAR&#40;255&#41;]]></description>
			<content:encoded><![CDATA[<div class="mwordstext"><p>Caso você tenha uma coluna <em>varchar</em> e queira alterar a quantidade de caracteres que ela aceita utilize o seguinte:</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span class="kw1">ALTER</span> <span class="kw1">TABLE</span> tabela <span class="kw1">ALTER</span> <span class="kw1">COLUMN</span> coluna <span class="kw1">TYPE</span> <span class="kw1">VARCHAR</span><span class="br0">&#40;</span><span class="nu0">255</span><span class="br0">&#41;</span></pre></div></div>

<p><img id="myFxSearchImg" style="border: medium none; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" alt="" width="24" height="24" /></p>
</div><!-- fim mwordstext -->]]></content:encoded>
			<wfw:commentRss>http://battisti.etc.br/2009/12/03/alterar-quantidade-de-caracteres-varchar-postgres/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Postgres Permission denied Is Server Running</title>
		<link>http://battisti.etc.br/2009/09/28/postgres-permission-denied-is-server-running/</link>
		<comments>http://battisti.etc.br/2009/09/28/postgres-permission-denied-is-server-running/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 13:13:04 +0000</pubDate>
		<dc:creator>battisti</dc:creator>
				<category><![CDATA[Postgre]]></category>

		<guid isPermaLink="false">http://battisti.etc.br/?p=632</guid>
		<description><![CDATA[Introdução Este fim de semana eu @battisti e o @asfelix tivemos um problema durante o processo de instalação do php com o postgres, depois de fazer todas as configurações o banco continuava a dar a seguinte mensagem de erro: Permission denied Is the server running on host "localhost" and accepting TCP/IP connections on port 5432? [...]]]></description>
			<content:encoded><![CDATA[<div class="mwordstext"><h1>Introdução</h1>
<p>Este fim de semana eu @battisti e o @asfelix tivemos um problema durante o processo de instalação do php com o postgres, depois de fazer todas as configurações o banco continuava a dar a seguinte mensagem de erro:</p>
<pre>Permission denied Is the server running on host "localhost" and accepting TCP/IP connections on port 5432?</pre>
<h1>Arquivos de Configuração</h1>
<p>O postgres possui basicamente 2 arquivos de configurações responsáveis pela conexão, eles são:</p>
<ol>
<li>postgresql.conf aqui você precisa definir que o seu banco de dados irá receber conexão através de TCP/IP, até a versão 7.9 do postgres esta configuração era feita assim:
<pre><code>tcpip_socket = true</code></pre>
<p><code>A partir da versão 8 isso é feito assim:</code> listen_addresses = ‘*’ port = 5432</li>
<li>pg_hba.conf este é o arquivo que define quem pode acessar o que e de qual forma: para permitir que qualquer IP possa acessar qualquer banco adicione esta linha no arquivo host    all          all         0.0.0.0 0.0.0.0       password Se quiser que apenas 1 IP específico possa acessar a máquina então host    all          all         200.200.200.200/32      password  A palavra password define que para você acessar o banco tem que digitar a senha, existe a palavra trust que diz ao banco para nao pedir senha então tenha cuidado com este tipo de configuração</li>
</ol>
<p>Após mexer nestes dois arquivos reinicie o banco.  Para acessar o seu banco através do terminal use o comando:  psql -h 200.200.200.200 -U postgres -d banco  Fique atento aos firewall pois eles podem barrar a sua conexão com o banco, e mais uma dica <span><span><span>para que a conexão possa ser estabelecida no CentOS é necessário desativar o SELinux, que por padrão na instalação fica ativado:</span></span></span> vim /etc/sysconfig/selinux  e configure  o SELINUX=disabled</p>
<h1>Exemplo de Conexão PHP para Teste</h1>

<div class="wp_syntax"><div class="code"><pre class="php">try <span class="br0">&#123;</span>
	<span class="re0">$db</span> <span class="sy0">=</span> <span class="kw2">new</span> PDO<span class="br0">&#40;</span><span class="st0">&quot;pgsql:host=localhost dbname=datacentro user=postgres password=data1234&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
	<span class="re0">$sql</span> <span class="sy0">=</span> <span class="st_h">'SELECT * FROM pessoa'</span><span class="sy0">;</span>
	<span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re0">$db</span><span class="sy0">-&amp;</span>gt<span class="sy0">;</span>query<span class="br0">&#40;</span><span class="re0">$sql</span><span class="br0">&#41;</span> <span class="kw1">as</span> <span class="re0">$row</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
		<span class="kw1">print</span> <span class="re0">$row</span><span class="br0">&#91;</span><span class="st_h">'cod'</span><span class="br0">&#93;</span> <span class="sy0">.</span> <span class="st0">&quot;<span class="es1">\t</span>&quot;</span><span class="sy0">;</span>
		<span class="kw1">print</span> <span class="re0">$row</span><span class="br0">&#91;</span><span class="st_h">'nome'</span><span class="br0">&#93;</span> <span class="sy0">.</span> <span class="st0">&quot;<span class="es1">\t</span>&quot;</span><span class="sy0">;</span>
	<span class="br0">&#125;</span>
&nbsp;
<span class="br0">&#125;</span> catch <span class="br0">&#40;</span>PDOException  <span class="re0">$e</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
   <span class="kw1">print</span> <span class="re0">$e</span><span class="sy0">-&amp;</span>gt<span class="sy0">;</span>getMessage<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<a href="http://www.php.net/die"><span class="kw3">die</span></a><span class="br0">&#40;</span><span class="st0">&quot;fim&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div>

<h1>Referência</h1>
<p>http://www.cyberciti.biz/faq/postgresql-remote-access-or-connection/</p>
<p>http://dickrips.wordpress.com/2009/01/16/apache-php-postgresql-no-centos-e-fedora</p>
</div><!-- fim mwordstext -->]]></content:encoded>
			<wfw:commentRss>http://battisti.etc.br/2009/09/28/postgres-permission-denied-is-server-running/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pg_Restore apenas de algumas tabelas</title>
		<link>http://battisti.etc.br/2009/08/15/pg_restore-apenas-de-algumas-tabelas/</link>
		<comments>http://battisti.etc.br/2009/08/15/pg_restore-apenas-de-algumas-tabelas/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 00:14:09 +0000</pubDate>
		<dc:creator>battisti</dc:creator>
				<category><![CDATA[Postgre]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://battisti.etc.br/?p=609</guid>
		<description><![CDATA[Geralmente temos nos nossos banco de dados uma tabela de log, e ela é o terror dos restores pois o número de registros dela geralmente é igual ou maior do que a soma de todos os registros das demais tabelas do banco, sendo assim, em restores de testes ou apenas de controle não queremos ficar [...]]]></description>
			<content:encoded><![CDATA[<div class="mwordstext"><p>Geralmente temos nos nossos banco de dados uma tabela de log, e ela é o terror dos restores pois o número de registros dela geralmente é igual ou maior do que a soma de todos os registros das demais tabelas do banco, sendo assim, em restores de testes ou apenas de controle não queremos ficar perdendo tempo esperando que os logs sejam restaurados, sendo assim é possível durante um restore pedir que o postgres ignore algumas tabelas para isso:<span id="more-609"></span></p>

<div class="wp_syntax"><div class="code"><pre class="sql">pg_restore <span class="sy0">-</span>l dump<span class="sy0">.</span>tar &amp;gt; lista<span class="sy0">.</span>txt
pg_restore <span class="sy0">-</span>L lista<span class="sy0">.</span>txt <span class="sy0">-</span>d banco <span class="sy0">-</span>U usuario</pre></div></div>

<p>Este arquivo lista.txt é uma relação com todos os objetos que estão dentro do arquivo de backup, basta abrir o arquivo e remover as tabelas que você não quer que o postgres restaure.</p>
</div><!-- fim mwordstext -->]]></content:encoded>
			<wfw:commentRss>http://battisti.etc.br/2009/08/15/pg_restore-apenas-de-algumas-tabelas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Remover Zeros a Esquerda Postgres / SQL</title>
		<link>http://battisti.etc.br/2009/07/22/remover-zeros-a-esquerda-postgres-sql/</link>
		<comments>http://battisti.etc.br/2009/07/22/remover-zeros-a-esquerda-postgres-sql/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 12:40:18 +0000</pubDate>
		<dc:creator>battisti</dc:creator>
				<category><![CDATA[Postgre]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://battisti.etc.br/?p=582</guid>
		<description><![CDATA[Introdução Caso você precise remover os zeros a esquerda/direita através de uma SQL você pode usar o ltrm (esquerda) e o ltrim (direita). Exemplo SELECT  ltrim(colunaA,0) FROM Isso vai retornar os dados da colunaA sem nenhum zero a esquerda]]></description>
			<content:encoded><![CDATA[<div class="mwordstext"><h1>Introdução</h1>
<p>Caso você precise remover os zeros a esquerda/direita através de uma SQL você pode usar o ltrm (esquerda) e o ltrim (direita).</p>
<h1><span id="more-582"></span>Exemplo</h1>
<p>SELECT  ltrim(colunaA,0) FROM</p>
<p>Isso vai retornar os dados da colunaA sem nenhum zero a esquerda</p>
</div><!-- fim mwordstext -->]]></content:encoded>
			<wfw:commentRss>http://battisti.etc.br/2009/07/22/remover-zeros-a-esquerda-postgres-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pg_dump / pg_restore Sem Senha</title>
		<link>http://battisti.etc.br/2009/07/14/pg_dump-pg_restore-sem-senha/</link>
		<comments>http://battisti.etc.br/2009/07/14/pg_dump-pg_restore-sem-senha/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 22:21:55 +0000</pubDate>
		<dc:creator>battisti</dc:creator>
				<category><![CDATA[Postgre]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://battisti.etc.br/?p=565</guid>
		<description><![CDATA[pg_dump / pg_restore Sem Senha]]></description>
			<content:encoded><![CDATA[<div class="mwordstext"><h1>Introdução</h1>
<p>Uma tarefas básica de todo DBA é cuidar para que os <em>backups</em> sejam bem feitos, no postgres as duas ferramentas básicas para isso são os pg_dump e o pg_restore.</p>
<p><span id="more-565"></span>Quando se executa o pg_dump será solicitada a senha do banco, porém em muitos casos o script de backup é gerado via cron ou outro mecanismo automatizado sendo assim existem 2 possibilidades para que o pg_dump não pesa a senha:</p>
<ul>
<li>Dentro do ph_hba.conf configurar como trust a conexão local, eu não aconselho isso por diversos motivos <img src='http://battisti.etc.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>Definir a senha no arquivo .pgpass</li>
</ul>
<h1>Construir o Arquivo .pgpass</h1>
<p>O arquivo .pgpass irá armazenar informações de autenticação no banco postgres, sua estrutura básica é:</p>
<pre><tt><em>hostname</em></tt>:<tt><em>port</em></tt>:<tt><em>database</em></tt>:<tt><em>username</em></tt>:<tt><em>password
</em></tt></pre>
<h3><tt>Dicas:<br />
</tt></h3>
<ul>
<li><tt> <em>hostname</em> é endereço IP de onde virá a conexão, caso seja uma conexão local deixar localhost;</tt></li>
<li><tt>Caso não queira especificar um dos parâmetros coloque *</tt></li>
</ul>
<h3>Exemplo:</h3>
<p>localhost:*:meu_banco:usuario:senha</p>
<p>Por fim mas não menos importante o arquivo .pgpass deve ficar na pasta home do usuário que irá solicitar o backup, além disso, as permissões do arquivo OBRIGATORIAMENTE devem ser 0600;</p>
<p>ou seja:</p>
<pre>chmod 0600 .pgpass</pre>
<h1>Referência</h1>
<p><a href="http://www.postgresql.org/docs/8.1/static/libpq-pgpass.html">http://www.postgresql.org/docs/8.1/static/libpq-pgpass.html</a></p>
</div><!-- fim mwordstext -->]]></content:encoded>
			<wfw:commentRss>http://battisti.etc.br/2009/07/14/pg_dump-pg_restore-sem-senha/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Criar Sequência / Auto-Incremento no Postgres</title>
		<link>http://battisti.etc.br/2009/06/18/criar-sequencia-auto-incremento-no-postgres/</link>
		<comments>http://battisti.etc.br/2009/06/18/criar-sequencia-auto-incremento-no-postgres/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 14:28:26 +0000</pubDate>
		<dc:creator>battisti</dc:creator>
				<category><![CDATA[Postgre]]></category>

		<guid isPermaLink="false">http://battisti.etc.br/?p=540</guid>
		<description><![CDATA[Introdução Os campos auto-incremento são geralmente utilizados para definir chaves primárias, o Postgre oferece um recurso chamado  sequence para solucionar este problema. O valor de uma seqüência é incrementado em 1 no momento que uma consulta para recuperar o seu valor acontece, ou seja, cada vez que você pede qual o valor atual da seqüência [...]]]></description>
			<content:encoded><![CDATA[<div class="mwordstext"><h1>Introdução</h1>
<p>Os campos auto-incremento são geralmente utilizados para definir chaves primárias, o Postgre oferece um recurso chamado  <em>sequence</em> para solucionar este problema. O valor de uma seqüência é incrementado em 1 no momento que uma consulta para recuperar o seu valor acontece, ou seja, cada vez que você pede qual o valor atual da seqüência seu valor é incrementado em 1.<span id="more-540"></span></p>
<h1>Solução</h1>
<p>Criar uma seqüência:</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span class="kw1">CREATE</span> <span class="kw1">SEQUENCE</span> boleto_sequencia;</pre></div></div>

<p>Definir o valor inicial da seqüência:</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span class="kw1">CREATE</span> <span class="kw1">SEQUENCE</span> boleto_sequencia <span class="kw1">START</span> <span class="nu0">250</span>;</pre></div></div>

<p>Alterando o valor da seqüência:</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span class="kw1">SELECT</span> <span class="kw1">SETVAL</span><span class="br0">&#40;</span><span class="st0">'boleto_sequencia'</span><span class="sy0">,</span> <span class="nu0">10</span><span class="br0">&#41;</span></pre></div></div>

<p>Recuperando o valor atual da sequência :</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span class="kw1">SELECT</span> <span class="kw1">NEXTVAL</span><span class="br0">&#40;</span><span class="st0">'boleto_sequencia'</span><span class="br0">&#41;</span>;</pre></div></div>

<h1>Referência</h1>
<p>http://meiocodigo.wordpress.com/2007/05/18/auto-incremento-em-postgresql/</p>
<p>http://www.htmlstaff.org/postgresqlmanual/sql-createsequence.html</p>
</div><!-- fim mwordstext -->]]></content:encoded>
			<wfw:commentRss>http://battisti.etc.br/2009/06/18/criar-sequencia-auto-incremento-no-postgres/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Consulta Sem Acento Postgres</title>
		<link>http://battisti.etc.br/2009/06/18/consulta-sem-acento-postgres/</link>
		<comments>http://battisti.etc.br/2009/06/18/consulta-sem-acento-postgres/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 01:49:28 +0000</pubDate>
		<dc:creator>battisti</dc:creator>
				<category><![CDATA[Postgre]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://battisti.etc.br/?p=536</guid>
		<description><![CDATA[O Problema A língua portuguesa gera diversos problemas para os DBA, um dos mais comuns esta no fato dos usuários querem digitar Joao (sem acento) em uma caixa de busca e querer que o banco localizar o João (com acento), para solucionar este problema no postgres você pode criar uma function que remove os acentos [...]]]></description>
			<content:encoded><![CDATA[<div class="mwordstext"><h1>O Problema</h1>
<p>A língua portuguesa gera diversos problemas para os DBA, um dos mais comuns esta no fato dos usuários querem digitar Joao (sem acento) em uma caixa de busca e querer que o banco localizar o Jo<strong>ã</strong>o (com acento), para solucionar este problema no postgres você pode criar uma <em>function</em> que remove os acentos durante as consultas.<span id="more-536"></span></p>
<h1>A Solução</h1>

<div class="wp_syntax"><div class="code"><pre class="sql"><span class="kw1">CREATE</span> <span class="kw1">OR</span> <span class="kw1">REPLACE</span> <span class="kw1">FUNCTION</span> <span class="st0">&quot;public&quot;</span><span class="sy0">.</span><span class="st0">&quot;sem_acentos&quot;</span> <span class="br0">&#40;</span><span class="kw1">VARCHAR</span><span class="br0">&#41;</span> <span class="kw1">RETURNS</span> <span class="kw1">VARCHAR</span> <span class="kw1">AS</span>
$body$
<span class="kw1">SELECT</span> TRANSLATE<span class="br0">&#40;</span>$1<span class="sy0">,</span> <span class="st0">'áéíóúàèìòùãõâêîôôäëïöüçÁÉÍÓÚÀÈÌÒÙÃÕÂÊÎÔÛÄËÏÖÜÇ'</span><span class="sy0">,</span> <span class="st0">'aeiouaeiouaoaeiooaeioucAEIOUAEIOUAOAEIOOAEIOUC'</span><span class="br0">&#41;</span>
$body$
<span class="kw1">LANGUAGE</span> <span class="st0">'sql'</span> VOLATILE CALLED <span class="kw1">ON</span> <span class="kw1">NULL</span> <span class="kw1">INPUT</span> SECURITY INVOKER;</pre></div></div>

<h2>Como Usar</h2>

<div class="wp_syntax"><div class="code"><pre class="sql"><span class="kw1">SELECT</span> pss_telefone <span class="kw1">WHERE</span> sem_acentos<span class="br0">&#40;</span>pss_nome<span class="br0">&#41;</span> <span class="kw1">LIKE</span> sem_acentos<span class="br0">&#40;</span><span class="st0">'%joao%'</span><span class="br0">&#41;</span></pre></div></div>

<p>Essa consulta irá retornar todos os João, com ou sem acento.</p>
</div><!-- fim mwordstext -->]]></content:encoded>
			<wfw:commentRss>http://battisti.etc.br/2009/06/18/consulta-sem-acento-postgres/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Criar Tabela Temporária no Postgres</title>
		<link>http://battisti.etc.br/2009/06/17/criar-tabela-temporaria-no-postgres/</link>
		<comments>http://battisti.etc.br/2009/06/17/criar-tabela-temporaria-no-postgres/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 00:01:22 +0000</pubDate>
		<dc:creator>battisti</dc:creator>
				<category><![CDATA[Postgre]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://battisti.etc.br/?p=527</guid>
		<description><![CDATA[Introdução Uma tabela temporaria (temporary table) é uma tabela como as demais, exceto pelo fato de que ela somente existe enquanto a sessão na qual ela foi criada estiver ativa, ou seja, assim que a conexão com o banco é fechada a tabela temporária é dropada do banco.  Em geral este tipo de tabela é [...]]]></description>
			<content:encoded><![CDATA[<div class="mwordstext"><h1>Introdução</h1>
<p>Uma tabela temporaria (temporary table) é uma tabela como as demais, exceto pelo fato de que ela somente existe enquanto a sessão na qual ela foi criada estiver ativa, ou seja, assim que a conexão com o banco é fechada a tabela temporária é <em>dropada</em> do banco.  Em geral este tipo de tabela é usado para armazenar o resultado imediato de uma consulta executada anteriormente.</p>
<h1><span id="more-527"></span>Criando Uma Tabela Temporária</h1>
<p>A sintaxe para criar uma tabela tempoáaria é:</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span class="kw1">CREATE</span> <span class="br0">&#91;</span> <span class="br0">&#91;</span> GLOBAL <span class="sy0">|</span> <span class="kw1">LOCAL</span> <span class="br0">&#93;</span> <span class="br0">&#123;</span> <span class="kw1">TEMPORARY</span> <span class="sy0">|</span> TEMP <span class="br0">&#125;</span> <span class="br0">&#93;</span> <span class="kw1">TABLE</span> nome_da_tabela
    <span class="br0">&#91;</span> <span class="br0">&#40;</span>nome_da_coluna <span class="br0">&#91;</span><span class="sy0">,</span> <span class="sy0">...</span><span class="br0">&#93;</span> <span class="br0">&#41;</span> <span class="br0">&#93;</span>
    <span class="br0">&#91;</span> <span class="kw1">WITH</span> <span class="br0">&#40;</span> parâmetro_de_armazenamento <span class="br0">&#91;</span><span class="sy0">=</span> valor<span class="br0">&#93;</span> <span class="br0">&#91;</span><span class="sy0">,</span> <span class="sy0">...</span> <span class="br0">&#93;</span> <span class="br0">&#41;</span> <span class="sy0">|</span> <span class="kw1">WITH</span> OIDS <span class="sy0">|</span> <span class="kw1">WITHOUT</span> OIDS <span class="br0">&#93;</span>
    <span class="br0">&#91;</span> <span class="kw1">ON</span> COMMIT <span class="br0">&#123;</span> PRESERVE <span class="kw1">ROWS</span> <span class="sy0">|</span> <span class="kw1">DELETE</span> <span class="kw1">ROWS</span> <span class="sy0">|</span> <span class="kw1">DROP</span> <span class="br0">&#125;</span> <span class="br0">&#93;</span>
    <span class="br0">&#91;</span> TABLESPACE espaço_de_tabelas <span class="br0">&#93;</span>
    <span class="kw1">AS</span> comando</pre></div></div>

<h2>Exemplo</h2>
<pre>+------------+
|   SALARIO  |
+------------+
| slr_valor  |
| pss_cod    |
+------------+
+------------+
|   PESSOA   |
+------------+
| pss_cod    |
| pss_nome   |
+------------+</pre>
<p>Listando o salário de todas as pessoas e depois calculando o valor total:</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span class="co1">-- Lista as pessoas</span>
<span class="kw1">SELECT</span> pss_cod<span class="sy0">,</span> pss_nome<span class="sy0">,</span> slr_valor <span class="kw1">FROM</span> pessoa p <span class="kw1">INNER</span> <span class="kw1">JOIN</span> salario s <span class="kw1">ON</span> p<span class="sy0">.</span>pss_cod <span class="sy0">=</span> s<span class="sy0">.</span>pss_cod
&nbsp;
<span class="co1">-- Cria a tabela temporária</span>
<span class="kw1">CREATE</span> <span class="kw1">TEMPORARY</span> <span class="kw1">TABLE</span> pessoa_salario <span class="kw1">AS</span>
    <span class="kw1">SELECT</span> pss_cod<span class="sy0">,</span> pss_nome<span class="sy0">,</span> slr_valor <span class="kw1">FROM</span> pessoa p <span class="kw1">INNER</span> <span class="kw1">JOIN</span> salario s <span class="kw1">ON</span> p<span class="sy0">.</span>pss_cod <span class="sy0">=</span> s<span class="sy0">.</span>pss_cod
&nbsp;
<span class="co1">-- Calcula a soma de todos os salários</span>
<span class="kw1">SELECT</span> <span class="kw1">SUM</span><span class="br0">&#40;</span>slr_valor<span class="br0">&#41;</span> <span class="kw1">FROM</span> pessoa_salario</pre></div></div>

<h1>Conclusão</h1>
<p>Em um primeiro momento pode-se imaginar que as tabelas temporárias não sejam muito úteis porém em diversas ocasiões a melhor forma para resolver problemas complexos e através de tabelas temporárias, principalmente quando as SQL envolvidas são complexas e aninhadas.</p>
<h1>Referências</h1>
<p><a href="http://www.postgresqlguide.com/creating-tables-in-postgresql.aspx">http://www.postgresqlguide.com/creating-tables-in-postgresql.aspx</a></p>
<p><a href="http://pgdocptbr.sourceforge.net/pg82/sql-createtableas.html">http://pgdocptbr.sourceforge.net/pg82/sql-createtableas.html</a></p>
</div><!-- fim mwordstext -->]]></content:encoded>
			<wfw:commentRss>http://battisti.etc.br/2009/06/17/criar-tabela-temporaria-no-postgres/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Criar Visão Postgres</title>
		<link>http://battisti.etc.br/2009/06/16/criar-visao-postgres/</link>
		<comments>http://battisti.etc.br/2009/06/16/criar-visao-postgres/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 17:02:02 +0000</pubDate>
		<dc:creator>battisti</dc:creator>
				<category><![CDATA[Postgre]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://battisti.etc.br/?p=518</guid>
		<description><![CDATA[Introdução Criar visões em bancos Postgre O Resultado Para cria uma visão para uma tabela pessoa por exemplo CREATE OR REPLACE VIEW p AS SELECT pss_nome, pss_telefone A partir desse ponto para selecionar nome e telefone basta executar SELECT * FROM p Conclusão As visões aumentam a velocidade da execução das SQL além disso podem [...]]]></description>
			<content:encoded><![CDATA[<div class="mwordstext"><h1>Introdução</h1>
<p>Criar visões em bancos Postgre<span id="more-518"></span></p>
<h1>O Resultado</h1>
<p>Para cria uma visão para uma tabela pessoa por exemplo</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span class="kw1">CREATE</span> <span class="kw1">OR</span> <span class="kw1">REPLACE</span> <span class="kw1">VIEW</span> p <span class="kw1">AS</span> <span class="kw1">SELECT</span> pss_nome<span class="sy0">,</span> pss_telefone</pre></div></div>

<p>A partir desse ponto para selecionar nome e telefone basta executar</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span class="kw1">SELECT</span> <span class="sy0">*</span> <span class="kw1">FROM</span> p</pre></div></div>

<h1>Conclusão</h1>
<p>As visões aumentam a velocidade da execução das SQL além disso podem facilitar a escrita do seu código.</p>
<h1>Referência</h1>
<p><a href="http://cunha17.cristianoduarte.pro.br/postgresql/snapshots.php">http://cunha17.cristianoduarte.pro.br/postgresql/snapshots.php</a></p>
</div><!-- fim mwordstext -->]]></content:encoded>
			<wfw:commentRss>http://battisti.etc.br/2009/06/16/criar-visao-postgres/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

