<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=ASIX-M10-UF2._Administraci%C3%B3_d%27un_SGBD._PostgreSQL</id>
	<title>ASIX-M10-UF2. Administració d'un SGBD. PostgreSQL - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=ASIX-M10-UF2._Administraci%C3%B3_d%27un_SGBD._PostgreSQL"/>
	<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=ASIX-M10-UF2._Administraci%C3%B3_d%27un_SGBD._PostgreSQL&amp;action=history"/>
	<updated>2026-08-30T13:50:05Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=ASIX-M10-UF2._Administraci%C3%B3_d%27un_SGBD._PostgreSQL&amp;diff=297181&amp;oldid=prev</id>
		<title>Joan: /* Exemple Python i PostgreSQL */</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=ASIX-M10-UF2._Administraci%C3%B3_d%27un_SGBD._PostgreSQL&amp;diff=297181&amp;oldid=prev"/>
		<updated>2021-01-13T15:22:40Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Exemple Python i PostgreSQL&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ca&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Versió més antiga&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisió del 15:22, 13 gen 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l226&quot; &gt;Línia 226:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línia 226:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Primer de tot:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Primer de tot:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;python&lt;/del&gt;-pygresql - PostgreSQL module for Python&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;python3&lt;/ins&gt;-pygresql - PostgreSQL module for Python&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;$ sudo apt-get install &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;python&lt;/del&gt;-pygresql&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;$ sudo apt-get install &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;python3&lt;/ins&gt;-pygresql&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l241&quot; &gt;Línia 241:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línia 241:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;cursor.execute(&amp;quot;insert into project (id, project_status_type_id, manager_person_id, name, description, start_date, end_date, budget, spent) values (%i,%i,%i,%s,%s,%s,%s,%i,%i)&amp;quot;, (5,3,7,'projecte de prova', 'desc projecte de prova', '2004-07-01', '2004-07-01', 1200, 1300))&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;cursor.execute(&amp;quot;insert into project (id, project_status_type_id, manager_person_id, name, description, start_date, end_date, budget, spent) values (%i,%i,%i,%s,%s,%s,%s,%i,%i)&amp;quot;, (5,3,7,'projecte de prova', 'desc projecte de prova', '2004-07-01', '2004-07-01', 1200, 1300))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;con.commit()&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;con.commit()&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Per executar:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;$ python3 insert_projects.py&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l252&quot; &gt;Línia 252:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línia 256:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;rows=cursor.fetchall()&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;rows=cursor.fetchall()&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;for row in rows:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;for row in rows:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	print '%i: %s - %s' % (row[0], row[3], row[5])&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	print &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;(&lt;/ins&gt;'%i: %s - %s' % (row[0], row[3], row[5]&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;)&lt;/ins&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Joan</name></author>
		
	</entry>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=ASIX-M10-UF2._Administraci%C3%B3_d%27un_SGBD._PostgreSQL&amp;diff=258757&amp;oldid=prev</id>
		<title>Joan: /* Exemple Python i PostgreSQL */</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=ASIX-M10-UF2._Administraci%C3%B3_d%27un_SGBD._PostgreSQL&amp;diff=258757&amp;oldid=prev"/>
		<updated>2020-01-23T15:22:26Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Exemple Python i PostgreSQL&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Referències=&lt;br /&gt;
*http://www.manniwood.com/postgresql_and_bash_stuff/&lt;br /&gt;
=Exemples=&lt;br /&gt;
Els següents exercicis utiltizen la base de dades ''project'' que vam veure en el seu dia. Ho pots repassar a:&lt;br /&gt;
*[[ASIX-M10-UF2._PostgreSQL._Instal.lació,_configuració_i_ús_del_PostgreSQL#Comen.C3.A7ar_a_treballar:_base_de_dades_project]]&lt;br /&gt;
&lt;br /&gt;
==Exemple 1==&lt;br /&gt;
'''Executar un script de postgres des de un bash script parametritzant'''&lt;br /&gt;
&lt;br /&gt;
Has de recuperar el script ''project_postgres.sql'' que regenera la base de dades ''project''.&lt;br /&gt;
&lt;br /&gt;
Recordem com executem un script SQL des de la línia de comandes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ psql -h localhost -p 5432 -U alumne -d project -f ./project_postgres.sql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
script '''load_sql_script.sh''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
set -e&lt;br /&gt;
set -u&lt;br /&gt;
&lt;br /&gt;
if [ $# != 3 ]; then&lt;br /&gt;
    echo &amp;quot;please enter a db host, a database name, and a script to execute (full path)&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
export DBHOST=$1&lt;br /&gt;
export DBNAME=$2&lt;br /&gt;
export SCRIPT_PATH=$3&lt;br /&gt;
&lt;br /&gt;
export PGPASSWORD=&amp;quot;postgres&amp;quot;&lt;br /&gt;
&lt;br /&gt;
psql \&lt;br /&gt;
    -X \&lt;br /&gt;
    -U postgres \&lt;br /&gt;
    -h $DBHOST \&lt;br /&gt;
    -f $SCRIPT_PATH \&lt;br /&gt;
    --echo-all \&lt;br /&gt;
    --set AUTOCOMMIT=off \&lt;br /&gt;
    --set ON_ERROR_STOP=on \&lt;br /&gt;
    $DBNAME&lt;br /&gt;
&lt;br /&gt;
psql_exit_status=$?&lt;br /&gt;
&lt;br /&gt;
if [ $psql_exit_status != 0 ]; then&lt;br /&gt;
    echo &amp;quot;psql failed while trying to run this sql script&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
    exit $psql_exit_status&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;sql script successful&amp;quot;&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''NOTA''': Si no volem que demani el password, tenim dues opcions com a mínim. Una possibilitat és, com vam veure al tema de seguretat a PostgreSQL, tocar el fitxer ''pg_hba.conf'' i fer confiança amb l'opció ''trust''. La segona opció és incorporar al teu script la comanda:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ export PGPASSWORD=postgres&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El script demana tres paràmetres: host, nom de la base de dades, i ruta completa del script SQL que volem executar.&lt;br /&gt;
&lt;br /&gt;
Per exemple:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./load_sql_script.sh localhost project /home/joan/M10_1516/scripts_admin_postgres/project_postgres.sql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Amb la comanda:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
psql_exit_status=$?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
podem saber si el script ha acabat correctament o no. Per veure com funciona, introdueix un error en el script SQL. En el cas de què $? sigui diferent de zero, es notifica un error.&lt;br /&gt;
&lt;br /&gt;
Després d'executar un script sempre pots fer $? per veure el resultat del script.&lt;br /&gt;
&lt;br /&gt;
*Descàrrega del script: [[Fitxer:Project postgres.sql.zip]]&lt;br /&gt;
&lt;br /&gt;
==Exemple 2==&lt;br /&gt;
'''Obtenir el valor d'una consulta SQL, i ficar-lo en una variable bash'''.&lt;br /&gt;
&lt;br /&gt;
script '''num_projectes.sh''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
export PGPASSWORD=&amp;quot;postgres&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NUM_PROJECTES=$(psql -U postgres -h localhost -P t -P format=unaligned -d project -c &amp;quot;select count(*) from project&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Número de projectes: $NUM_PROJECTES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$NUM_PROJECTES&amp;quot; -gt &amp;quot;10&amp;quot; ]; then&lt;br /&gt;
echo més de 10&lt;br /&gt;
else&lt;br /&gt;
echo menys o igual que 10&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemples 3 i 4==&lt;br /&gt;
Seguint el link de referència, anem a provar aquests dos exemples. Hem d'obtenim el camps d'un dels projectes de la taula ''project''. Ho fem de dues maneres diferents:&lt;br /&gt;
&lt;br /&gt;
'''one_row_select_v1.sh''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
export PGPASSWORD=&amp;quot;postgres&amp;quot;&lt;br /&gt;
&lt;br /&gt;
read id start_date end_date budget spent&amp;lt;&amp;lt;&amp;lt; $(psql \&lt;br /&gt;
    -X \&lt;br /&gt;
    -U postgres \&lt;br /&gt;
    -h localhost \&lt;br /&gt;
    -d project \&lt;br /&gt;
    --single-transaction \&lt;br /&gt;
    --set ON_ERROR_STOP=on \&lt;br /&gt;
    --no-align \&lt;br /&gt;
    -t \&lt;br /&gt;
    --field-separator ' ' \&lt;br /&gt;
    --quiet \&lt;br /&gt;
    -c &amp;quot;select id, start_date, end_date, budget, spent from project where id=1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;id: $id, start_date: $start_date, end_date: $end_date, budget: $budget, spent: $spent&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''one_row_select_v2.sh''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
export PGPASSWORD=&amp;quot;postgres&amp;quot;&lt;br /&gt;
&lt;br /&gt;
set -e&lt;br /&gt;
set -u&lt;br /&gt;
&lt;br /&gt;
declare -a ROW=($(psql \&lt;br /&gt;
    -X \&lt;br /&gt;
    -h localhost \&lt;br /&gt;
    -U postgres \&lt;br /&gt;
    -c &amp;quot;select id, start_date, end_date, budget, spent from project where id = 1&amp;quot; \&lt;br /&gt;
    --single-transaction \&lt;br /&gt;
    --set AUTOCOMMIT=off \&lt;br /&gt;
    --set ON_ERROR_STOP=on \&lt;br /&gt;
    --no-align \&lt;br /&gt;
    -t \&lt;br /&gt;
    --field-separator ' ' \&lt;br /&gt;
    --quiet \&lt;br /&gt;
    project))&lt;br /&gt;
&lt;br /&gt;
id=${ROW[0]}&lt;br /&gt;
start_date=${ROW[1]}&lt;br /&gt;
end_date=${ROW[2]}&lt;br /&gt;
budget=${ROW[3]}&lt;br /&gt;
spent=${ROW[4]}&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;id: $id, start_date: $start_date, end_date: $end_date, budget: $budget, spent: $spent&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Exemples 5 i 6==&lt;br /&gt;
Seguint el link de referència, anem a provar aquests dos exemples. Hem d'obtenir els camps dels projectes de la taula ''project'', recorrent totes les files. Ho fem de dues maneres diferents:&lt;br /&gt;
&lt;br /&gt;
'''multiple_row_select_v1.sh''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
export PGPASSWORD=&amp;quot;postgres&amp;quot;&lt;br /&gt;
&lt;br /&gt;
set -e&lt;br /&gt;
set -u&lt;br /&gt;
&lt;br /&gt;
PSQL=/usr/bin/psql&lt;br /&gt;
&lt;br /&gt;
DB_USER=postgres&lt;br /&gt;
DB_HOST=localhost&lt;br /&gt;
DB_NAME=project&lt;br /&gt;
&lt;br /&gt;
$PSQL \&lt;br /&gt;
    -X \&lt;br /&gt;
    -h $DB_HOST \&lt;br /&gt;
    -U $DB_USER \&lt;br /&gt;
    -c &amp;quot;select id, start_date, end_date, budget, spent from project&amp;quot; \&lt;br /&gt;
    --single-transaction \&lt;br /&gt;
    --set AUTOCOMMIT=off \&lt;br /&gt;
    --set ON_ERROR_STOP=on \&lt;br /&gt;
    --no-align \&lt;br /&gt;
    -t \&lt;br /&gt;
    --field-separator ' ' \&lt;br /&gt;
    --quiet \&lt;br /&gt;
    -d $DB_NAME \&lt;br /&gt;
| while read id start_date end_date budget spent ; do&lt;br /&gt;
    echo &amp;quot;id: $id, start_date: $start_date, end_date: $end_date, budget: $budget, spent: $spent&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''multiple_row_select_v2.sh''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
export PGPASSWORD=&amp;quot;postgres&amp;quot;&lt;br /&gt;
&lt;br /&gt;
set -e&lt;br /&gt;
set -u&lt;br /&gt;
&lt;br /&gt;
PSQL=/usr/bin/psql&lt;br /&gt;
&lt;br /&gt;
DB_USER=postgres&lt;br /&gt;
DB_HOST=localhost&lt;br /&gt;
DB_NAME=project&lt;br /&gt;
&lt;br /&gt;
$PSQL \&lt;br /&gt;
    -X \&lt;br /&gt;
    -h $DB_HOST \&lt;br /&gt;
    -U $DB_USER \&lt;br /&gt;
    -c &amp;quot;select id, start_date, end_date, budget, spent from project&amp;quot; \&lt;br /&gt;
    --single-transaction \&lt;br /&gt;
    --set AUTOCOMMIT=off \&lt;br /&gt;
    --set ON_ERROR_STOP=on \&lt;br /&gt;
    --no-align \&lt;br /&gt;
    -t \&lt;br /&gt;
    --field-separator ' ' \&lt;br /&gt;
    --quiet \&lt;br /&gt;
    $DB_NAME | while read -a Record ; do&lt;br /&gt;
&lt;br /&gt;
    id=${Record[0]}&lt;br /&gt;
    start_date=${Record[1]}&lt;br /&gt;
    end_date=${Record[2]}&lt;br /&gt;
    budget=${Record[3]}&lt;br /&gt;
    spent=${Record[4]}&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;id: $id, start_date: $start_date, end_date: $end_date, budget: $budget, spent: $spent&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''NOTA''': en aquesta segona versió, si hi ha un camp buit dóna error.&lt;br /&gt;
&lt;br /&gt;
=Exemple 7=&lt;br /&gt;
En els exemples 3, 4, 5 i 6 hem fet una petita trampa. Només hem agafat camps que no tenien espais en blanc. Per exemple, no hem agafat el camp ''nom'' o ''descripció''. Per poder-ho fer, hem de saber com des de bash podem separar una cadena que conté delimitadors diferents de l'espai en blanc, en les variables corresponents. Per exemple, mira't aquest enllaç:&lt;br /&gt;
*http://stackoverflow.com/questions/918886/how-do-i-split-a-string-on-a-delimiter-in-bash&lt;br /&gt;
&lt;br /&gt;
=Exemple Python i PostgreSQL=&lt;br /&gt;
Primer de tot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python-pygresql - PostgreSQL module for Python&lt;br /&gt;
$ sudo apt-get install python-pygresql&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*http://www.pygresql.org/contents/tutorial.html&lt;br /&gt;
Fer un insert: '''insert_projects.py''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
from pgdb import connect&lt;br /&gt;
con = connect(database='project', host='localhost:5432', user='postgres', password='postgres')&lt;br /&gt;
cursor = con.cursor()&lt;br /&gt;
#cursor.execute(&amp;quot;insert into project (name) values (%s)&amp;quot;, ('banana',))&lt;br /&gt;
#insert into project (id, project_status_type_id, manager_person_id, name, description, start_date, end_date, budget, spent) values (5,3,7,'projecte de prova', 'desc projecte de prova', '2004-07-01', '2004-07-01', 1200, 1300);&lt;br /&gt;
cursor.execute(&amp;quot;insert into project (id, project_status_type_id, manager_person_id, name, description, start_date, end_date, budget, spent) values (%i,%i,%i,%s,%s,%s,%s,%i,%i)&amp;quot;, (5,3,7,'projecte de prova', 'desc projecte de prova', '2004-07-01', '2004-07-01', 1200, 1300))&lt;br /&gt;
con.commit()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
select de múltiples files: '''select_projects.py''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
from pgdb import connect&lt;br /&gt;
con = connect(database='project', host='localhost:5432', user='postgres', password='postgres')&lt;br /&gt;
cursor = con.cursor()&lt;br /&gt;
cursor.execute(&amp;quot;select * from project&amp;quot;)&lt;br /&gt;
rows=cursor.fetchall()&lt;br /&gt;
for row in rows:&lt;br /&gt;
	print '%i: %s - %s' % (row[0], row[3], row[5])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Joan</name></author>
		
	</entry>
</feed>