<?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>Archives des Postgresql - Xavki</title>
	<atom:link href="https://xavki.blog/category/postgresql/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>Open your Sources..</description>
	<lastBuildDate>Wed, 31 Oct 2018 14:17:02 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>[SQL] : créez des constantes et des noms de résultats</title>
		<link>https://xavki.blog/sql-creez-des-constantes-et-des-noms-de-resultats/</link>
		
		<dc:creator><![CDATA[xavki]]></dc:creator>
		<pubDate>Wed, 31 Oct 2018 14:17:02 +0000</pubDate>
				<category><![CDATA[Mysql]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Postgresql]]></category>
		<guid isPermaLink="false">http://xavki.blog/?p=562</guid>

					<description><![CDATA[<p><img width="508" height="138" src="https://xavki.blog/wp-content/uploads/2018/08/alias-query.png" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" fetchpriority="high" srcset="https://xavki.blog/wp-content/uploads/2018/08/alias-query.png 508w, https://xavki.blog/wp-content/uploads/2018/08/alias-query-300x81.png 300w" sizes="(max-width: 508px) 100vw, 508px" />DBA et développeur, cet article est pour vous&#8230; y&#8217;en faut pour tous les goûts comme on dit. Voici deux outils peu utilisés dans les bases de données que j&#8217;ai pu voir récemment. Et pourtant, ils permettent de simplifier votre script... <a href="https://xavki.blog/sql-creez-des-constantes-et-des-noms-de-resultats/" class="suite"><i class="fal fa-long-arrow-right"></i></a></p>
<p>L’article <a href="https://xavki.blog/sql-creez-des-constantes-et-des-noms-de-resultats/">[SQL] : créez des constantes et des noms de résultats</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="508" height="138" src="https://xavki.blog/wp-content/uploads/2018/08/alias-query.png" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" srcset="https://xavki.blog/wp-content/uploads/2018/08/alias-query.png 508w, https://xavki.blog/wp-content/uploads/2018/08/alias-query-300x81.png 300w" sizes="(max-width: 508px) 100vw, 508px" /><p>DBA et développeur, cet article est pour vous&#8230; y&#8217;en faut pour tous les goûts comme on dit. Voici deux outils peu utilisés dans les bases de données que j&#8217;ai pu voir récemment. Et pourtant, ils permettent de simplifier votre script sql et de le rendre plus lisible et plus structuré (génial lol).</p>
<h2>Les constantes en SQL</h2>
<p>Ce n&#8217;est pas révolutionnaire mais si vous ne le savez pa déjà, vous pouvez définir un groupe de constante en sql avec la clause &#8220;WITH &#8230; AS&#8221;. Cela vous permettra d&#8217;utiliser ces données fixes comme des tables pratiquement.</p>
<p>Par exemple si on définit les constantes de temps :</p>
<pre>WITH timeconstants AS (
SELECT 60 as seconds,
       60 as minutes,
       24 as hours,
       365 as days,
       7 as week,
       ['Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche'] as daysweek,
),</pre>
<p>C&#8217;est pas mal mais comment utiliser ces constantes ? comme une requête.</p>
<pre>SELECT seconds, minutes, hours, days FROM timeconstants;</pre>
<p>Enfantin comme dirait l&#8217;autre.</p>
<h2>Les noms de résultats</h2>
<p>Je parlerai plutôt d&#8217;alias mais souvent en sql on parle d&#8217;alias pour les alias de table par exemple et on l&#8217;utilise plutôt dans la clause FROM. En totu cas le principe est presque el même sauf qu&#8217;il s&#8217;agit à la manière d&#8217;un vue d&#8217;attribuer un alias à une requête entière.</p>
<p>On le fait ainsi :</p>
<pre>myextract AS (
   SELECT
   IF(colonne1 &lt; 10, "little", "big") AS qualified_sale,
   colonne1,   nb_hours,   colonne2 / 10  FROM mytable)</pre>
<p>Et si on combine les deux on retrouve des trucs du genre :</p>
<pre>SELECT nb_hours * minutes * secondes AS timer
FROM mytable, timeconstants;</pre>
<p>Alors je fais un peu n&#8217;importe quoi mais c&#8217;est un exemple.Ici on utilise les constantes minutes et secondes pour calculer les heures passées en secondes.</p>
<p>L&#8217;intérêt vous le voyez c&#8217;est que désormais tout possède un nom et que pour appeler les éléments ils doivent être définis à travers le &#8220;FROM&#8221;. Derrière il est beaucoup plus simple de faire de la modélisation et surtout si vos constantes évoluent vous n&#8217;avez pas besoin de revoir toutes vos requêtes.</p>
<p>&nbsp;</p>
<p>Pour ces éléments SQL que nous venons de voir, on parle de CTE dans le jargon DBA. CTE pour <a href="https://sqlpro.developpez.com/cours/sqlserver/cte-recursives/">Common Table Expression</a>. Ces petites clauses permettent de jouer sur les &#8220;alias&#8221; pour créer des pseudos tables qui ne sont pas non plus des vues et qui visent à simplifier le travail de maintenance.</p>
<p>L’article <a href="https://xavki.blog/sql-creez-des-constantes-et-des-noms-de-resultats/">[SQL] : créez des constantes et des noms de résultats</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>[Postgresql] : Appliquer un GRANT à toutes les séquences d&#8217;une base</title>
		<link>https://xavki.blog/postgresql-appliquer-un-grant-a-toutes-les-sequences-dune-base/</link>
		
		<dc:creator><![CDATA[xavki]]></dc:creator>
		<pubDate>Thu, 30 Aug 2018 13:15:13 +0000</pubDate>
				<category><![CDATA[Postgresql]]></category>
		<guid isPermaLink="false">https://xavki.wordpress.com/?p=206</guid>

					<description><![CDATA[<p><img width="1817" height="1300" src="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-296878.jpeg" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-296878.jpeg 1817w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-296878-300x215.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-296878-768x549.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-296878-1024x733.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-296878-1568x1122.jpeg 1568w" sizes="(max-width: 1817px) 100vw, 1817px" />Vous utilisez postgresql, cet article est pour vous ? Encore une fois rien de bien compliqué mais de l&#8217;élémentaire et efficace. Si vous faites souvent des imports de base sans reprendre tous les GRANT (droits) qui vont bien, vous vous... <a href="https://xavki.blog/postgresql-appliquer-un-grant-a-toutes-les-sequences-dune-base/" class="suite"><i class="fal fa-long-arrow-right"></i></a></p>
<p>L’article <a href="https://xavki.blog/postgresql-appliquer-un-grant-a-toutes-les-sequences-dune-base/">[Postgresql] : Appliquer un GRANT à toutes les séquences d&#8217;une base</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="1817" height="1300" src="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-296878.jpeg" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-296878.jpeg 1817w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-296878-300x215.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-296878-768x549.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-296878-1024x733.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-296878-1568x1122.jpeg 1568w" sizes="auto, (max-width: 1817px) 100vw, 1817px" /><p>Vous utilisez postgresql, cet article est pour vous ? Encore une fois rien de bien compliqué mais de l&#8217;élémentaire et efficace. Si vous faites souvent des imports de base sans reprendre tous les GRANT (droits) qui vont bien, vous vous retrouvez à faire des ALTER sur les tables pour redonner les bons droits aux bons users (utilisateurs).</p>
<p>Mais pour les séquences ça peut se compliquer car vous n&#8217;avez pas de possibilité de faire cela en masse comme on peut faire un &#8220;GRANT ALL ON ALL TABLES&#8221;. Du coup on va quand même pas se palucher les droits à la main non ? et pis quoi encore lol.</p>
<p>Bon les DBA postgresql le savent il suffit de faire une petite boucle qui va bien comme ceci :<br />
<code>echo "select sequence_name FROM information_schema.sequences" | psql --cluster 9.4/main -d madatabase | grep -v '('|awk '{print "GRANT ALL ON TABLE madatabase."$1" TO monuser;"}' &gt; maj_grant_monuser.sql<br />
</code><br />
Pas trop compliqué :</p>
<ul>
<li>On liste les séquences de la base</li>
<li>on vire la ligne vide</li>
<li>on édite une line GRANT sur la séquence</li>
<li>on ajoute cette ligne dans un fichier sql</li>
</ul>
<p>Il vous reste ensuite à lancer ce script et le tour est joué. Dans mon cas, j&#8217;ai indiqué &#8211;cluster pour le cas où on a plusieurs cluster sur la machine sinon viré l&#8217;option et l&#8217;argument.</p>
<div id="attachment_87" style="width: 1827px" class="wp-caption alignnone"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-87" class="alignnone size-full wp-image-87" src="http://xavki.blog/wp-content/uploads/2018/07/pexels-photo-296878.jpeg" alt="box business celebrate celebration" width="1817" height="1300" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-296878.jpeg 1817w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-296878-300x215.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-296878-768x549.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-296878-1024x733.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-296878-1568x1122.jpeg 1568w" sizes="auto, (max-width: 1817px) 100vw, 1817px" /><p id="caption-attachment-87" class="wp-caption-text">Photo by rawpixel.com on <a href="https://www.pexels.com/" rel="nofollow">Pexels.com</a></p></div>
<p>&nbsp;</p>
<p>L’article <a href="https://xavki.blog/postgresql-appliquer-un-grant-a-toutes-les-sequences-dune-base/">[Postgresql] : Appliquer un GRANT à toutes les séquences d&#8217;une base</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>[Postgresql] : changer des tables de schéma</title>
		<link>https://xavki.blog/postgresql-changer-des-tables-de-schemas/</link>
		
		<dc:creator><![CDATA[xavki]]></dc:creator>
		<pubDate>Tue, 31 Jul 2018 08:40:11 +0000</pubDate>
				<category><![CDATA[Postgresql]]></category>
		<guid isPermaLink="false">https://xavki.wordpress.com/?p=215</guid>

					<description><![CDATA[<p><img width="1876" height="1300" src="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-133394.jpeg" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-133394.jpeg 1876w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-133394-300x208.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-133394-768x532.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-133394-1024x710.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-133394-1568x1087.jpeg 1568w" sizes="auto, (max-width: 1876px) 100vw, 1876px" />Les imports de bases se passent plus ou moins comme l&#8217;on veut. Par exemple, si on restaure des datas dans une base différente ou si on créé la base morceau par morceau (structure, user&#8230;), vous pouvez vous retrouver avec les... <a href="https://xavki.blog/postgresql-changer-des-tables-de-schemas/" class="suite"><i class="fal fa-long-arrow-right"></i></a></p>
<p>L’article <a href="https://xavki.blog/postgresql-changer-des-tables-de-schemas/">[Postgresql] : changer des tables de schéma</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="1876" height="1300" src="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-133394.jpeg" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-133394.jpeg 1876w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-133394-300x208.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-133394-768x532.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-133394-1024x710.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-133394-1568x1087.jpeg 1568w" sizes="auto, (max-width: 1876px) 100vw, 1876px" /><p>Les imports de bases se passent plus ou moins comme l&#8217;on veut. Par exemple, si on restaure des datas dans une base différente ou si on créé la base morceau par morceau (structure, user&#8230;), vous pouvez vous retrouver avec les tables de votre applis situées dans le schéma &#8220;public&#8221;. Pas forcément ce que l&#8217;on recherche. Bien souvent on créé un schéma spécifique pour chaque application.</p>
<p>Comment réaffecter toutes les tables du schéma &#8220;public&#8221; dans un autre schéma ?</p>
<p>Pas très compliqué, pour une table :</p>
<pre>ALTER TABLE public.nommatable SET SCHEMA monschema; </pre>
<p>Pour une seule table pas de problème. Mais pour toutes les tables ?</p>
<pre>DO $$ DECLARE 	row record; BEGIN 	FOR row IN SELECT tablename FROM pg_tables WHERE schemaname = 'public' -- and other conditions, if needed 	LOOP 		EXECUTE 'ALTER TABLE public.' || quote_ident(row.tablename) || ' SET SCHEMA monschema;'; 	END LOOP; END; $$;</pre>
<div id="attachment_216" style="width: 1890px" class="wp-caption alignnone"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-216" src="http://xavki.blog/wp-content/uploads/2018/07/pexels-photo-133394.jpeg?w=1880" class="alignnone size-full wp-image-216" height="1303" alt="animal big elephant endangered" width="1880" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-133394.jpeg 1876w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-133394-300x208.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-133394-768x532.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-133394-1024x710.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-133394-1568x1087.jpeg 1568w" sizes="auto, (max-width: 1880px) 100vw, 1880px" /><p id="caption-attachment-216" class="wp-caption-text">Photo by Anthony on <a href="https://www.pexels.com/" rel="nofollow">Pexels.com</a></p></div>
<p>Cette fonction/procédure permet donc de lister toutes les tables puis de lancer une boucle sur celle-ci en faisant le ALTER TABLE SET SCHEMA.</p>
<p>L’article <a href="https://xavki.blog/postgresql-changer-des-tables-de-schemas/">[Postgresql] : changer des tables de schéma</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
