| 1 |
<!-- |
|---|
| 2 |
$Header: /var/lib/cvs/pgsql-fr/sgml/bki.sgml,v 1.5.2.1 2005/03/14 06:02:59 guillaume Exp $ |
|---|
| 3 |
--> |
|---|
| 4 |
|
|---|
| 5 |
<chapter id="bki"> |
|---|
| 6 |
<title>Interface moteur <acronym>BKI</acronym></title> |
|---|
| 7 |
|
|---|
| 8 |
<para> |
|---|
| 9 |
Les fichiers d'interface du moteur (<acronym>BKI</acronym>) sont des scripts |
|---|
| 10 |
écrits dans un langage spécial, servis au serveur |
|---|
| 11 |
<productname>PostgreSQL</productname> lancé dans le mode spécial |
|---|
| 12 |
<quote>bootstrap</quote> qui lui permet de réaliser les fonctions de base de |
|---|
| 13 |
données sans système de base de données déjà existant. |
|---|
| 14 |
Les fichiers <acronym>BKI</acronym> peuvent donc être utilisés pour créer le |
|---|
| 15 |
système de base de données en tout premier lieu. (Et ils ne sont probablement |
|---|
| 16 |
pas utiles pour un autre emploi.) |
|---|
| 17 |
</para> |
|---|
| 18 |
|
|---|
| 19 |
<para> |
|---|
| 20 |
<application>initdb</application> utilise un fichier <acronym>BKI</acronym> |
|---|
| 21 |
pour faire une partie de son travail lors de la création d'un nouveau groupe |
|---|
| 22 |
de base de données. Le fichier en entrée utilisé par |
|---|
| 23 |
<application>initdb</application> est créé lors de la construction et de |
|---|
| 24 |
l'installation de <productname>PostgreSQL</productname> par un programme |
|---|
| 25 |
nommé <filename>genbki.sh</filename> à partir de quelques fichiers d'en-têtes |
|---|
| 26 |
C spécialement formatés dans le répertoire des sources. Le fichier |
|---|
| 27 |
<acronym>BKI</acronym> créé est appelé <filename>postgres.bki</filename> et |
|---|
| 28 |
est normalement installé dans le sous-répertoire <filename>share</filename> |
|---|
| 29 |
du répertoire d'installation. |
|---|
| 30 |
</para> |
|---|
| 31 |
|
|---|
| 32 |
<para> |
|---|
| 33 |
Des informations plus complètes sont disponibles dans la documentation pour |
|---|
| 34 |
<application>initdb</application>. |
|---|
| 35 |
</para> |
|---|
| 36 |
|
|---|
| 37 |
<sect1 id="bki-format"> |
|---|
| 38 |
<title>Format des fichiers <acronym>BKI</acronym></title> |
|---|
| 39 |
|
|---|
| 40 |
<para> |
|---|
| 41 |
Cette section décrit comment le serveur <productname>PostgreSQL</productname> |
|---|
| 42 |
interprète les fichiers <acronym>BKI</acronym>. Cette description |
|---|
| 43 |
sera plus simple à comprendre si le fichier <filename>postgres.bki</filename> |
|---|
| 44 |
se trouve à portée de main comme exemple. Vous devriez aussi étudier le code |
|---|
| 45 |
source d'<application>initdb</application> pour avoir une idée de la façon |
|---|
| 46 |
dont le moteur est appelé. |
|---|
| 47 |
</para> |
|---|
| 48 |
|
|---|
| 49 |
<para> |
|---|
| 50 |
L'entrée <acronym>BKI</acronym> consiste en une séquence de commandes. Les |
|---|
| 51 |
commandes sont constituées d'un certain nombre d'éléments, suivant la syntaxe de |
|---|
| 52 |
la commande. Les éléments sont habituellement séparés par des espaces blancs |
|---|
| 53 |
mais n'ont pas besoin de l'être s'il n'y a pas d'ambiguïté. Il n'existe pas |
|---|
| 54 |
de séparateur spécial pour les commandes ; le prochain élément qui ne |
|---|
| 55 |
peut syntaxiquement pas appartenir à la commande précédente en lance une |
|---|
| 56 |
autre. (Habituellement, vous devriez mettre une nouvelle commande sur une |
|---|
| 57 |
nouvelle ligne pour plus de clarté.) Les éléments peuvent être certains mots |
|---|
| 58 |
clés, des caractères spéciaux (parenthèses, virgules, etc.), nombres ou |
|---|
| 59 |
chaînes de caractères entre guillemets doubles. Tous sont sensibles à la |
|---|
| 60 |
casse. |
|---|
| 61 |
</para> |
|---|
| 62 |
|
|---|
| 63 |
<para> |
|---|
| 64 |
Les lignes commençant avec un <literal>#</literal> sont ignorées. |
|---|
| 65 |
</para> |
|---|
| 66 |
|
|---|
| 67 |
</sect1> |
|---|
| 68 |
|
|---|
| 69 |
<sect1 id="bki-commands"> |
|---|
| 70 |
<title>Commandes <acronym>BKI</acronym></title> |
|---|
| 71 |
|
|---|
| 72 |
<variablelist> |
|---|
| 73 |
<varlistentry> |
|---|
| 74 |
<term> |
|---|
| 75 |
open <replaceable class="parameter">nomtable</replaceable> |
|---|
| 76 |
</term> |
|---|
| 77 |
|
|---|
| 78 |
<listitem> |
|---|
| 79 |
<para> |
|---|
| 80 |
Ouvre la table nommée |
|---|
| 81 |
<replaceable class="parameter">nomtable</replaceable> |
|---|
| 82 |
pour plus de manipulations. |
|---|
| 83 |
</para> |
|---|
| 84 |
</listitem> |
|---|
| 85 |
</varlistentry> |
|---|
| 86 |
|
|---|
| 87 |
<varlistentry> |
|---|
| 88 |
<term> |
|---|
| 89 |
close <optional><replaceable class="parameter">nomtable</replaceable></optional> |
|---|
| 90 |
</term> |
|---|
| 91 |
|
|---|
| 92 |
<listitem> |
|---|
| 93 |
<para> |
|---|
| 94 |
Ferme la table ouverte appelée <replaceable |
|---|
| 95 |
class="parameter">nomtable</replaceable>. Une erreur survient si |
|---|
| 96 |
<replaceable class="parameter">nomtable</replaceable> n'est pas déjà |
|---|
| 97 |
ouverte. Si <replaceable class="parameter">nomtable</replaceable> n'est |
|---|
| 98 |
pas indiqué, alors la table ouverte en cours est fermée. |
|---|
| 99 |
</para> |
|---|
| 100 |
</listitem> |
|---|
| 101 |
</varlistentry> |
|---|
| 102 |
|
|---|
| 103 |
<varlistentry> |
|---|
| 104 |
<term> |
|---|
| 105 |
create <replaceable class="parameter">nomtable</replaceable> |
|---|
| 106 |
(<replaceable class="parameter">nom1</replaceable> = |
|---|
| 107 |
<replaceable class="parameter">type1</replaceable> <optional>, |
|---|
| 108 |
<replaceable class="parameter">nom2</replaceable> = <replaceable |
|---|
| 109 |
class="parameter">type2</replaceable>, ...</optional>) |
|---|
| 110 |
</term> |
|---|
| 111 |
|
|---|
| 112 |
<listitem> |
|---|
| 113 |
<para> |
|---|
| 114 |
Crée une table nommée <replaceable |
|---|
| 115 |
class="parameter">nomtable</replaceable> avec les colonnes spécifiées |
|---|
| 116 |
entre parenthèses. |
|---|
| 117 |
</para> |
|---|
| 118 |
|
|---|
| 119 |
<para> |
|---|
| 120 |
Le <replaceable>type</replaceable> n'est pas nécessairement le type de |
|---|
| 121 |
données que la colonne aura dans l'environnement SQL ; c'est |
|---|
| 122 |
déterminé par le catalogue système <structname>pg_attribute</structname>. |
|---|
| 123 |
Ici, le type est seulement utilisé pour allouer un emplacement. Les types |
|---|
| 124 |
suivants sont autorisés : <type>bool</type>, |
|---|
| 125 |
<type>bytea</type>, <type>char</type> (1 octet), |
|---|
| 126 |
<type>name</type>, <type>int2</type>, <type>int2vector</type>, |
|---|
| 127 |
<type>int4</type>, <type>regproc</type>, <type>regclass</type>, |
|---|
| 128 |
<type>regtype</type>, <type>text</type>, |
|---|
| 129 |
<type>oid</type>, <type>tid</type>, <type>xid</type>, |
|---|
| 130 |
<type>cid</type>, <type>oidvector</type>, <type>smgr</type>, |
|---|
| 131 |
<type>_int4</type> (tableau), <type>_aclitem</type> (tableau). |
|---|
| 132 |
Les types tableau peuvent aussi être indiqués en écrivant |
|---|
| 133 |
<literal>[]</literal> après le nom du type de l'élément. |
|---|
| 134 |
</para> |
|---|
| 135 |
|
|---|
| 136 |
<note> |
|---|
| 137 |
<para> |
|---|
| 138 |
La table sera seulement créée sur disque, elle ne sera pas |
|---|
| 139 |
automatiquement enregistrée dans les catalogues système et ne sera donc |
|---|
| 140 |
pas accessible sauf si les lignes appropriées sont insérées dans |
|---|
| 141 |
<structname>pg_class</structname>, |
|---|
| 142 |
<structname>pg_attribute</structname>, etc. |
|---|
| 143 |
</para> |
|---|
| 144 |
</note> |
|---|
| 145 |
</listitem> |
|---|
| 146 |
</varlistentry> |
|---|
| 147 |
|
|---|
| 148 |
<varlistentry> |
|---|
| 149 |
<term> |
|---|
| 150 |
insert <optional>OID = <replaceable class="parameter">valeur_oid</replaceable></optional> (<replaceable class="parameter">valeur1</replaceable> <replaceable class="parameter">valeur2</replaceable> ...) |
|---|
| 151 |
</term> |
|---|
| 152 |
|
|---|
| 153 |
<listitem> |
|---|
| 154 |
<para> |
|---|
| 155 |
Insère une nouvelle ligne dans la table ouverte en utilisant <replaceable |
|---|
| 156 |
class="parameter">valeur1</replaceable>, <replaceable |
|---|
| 157 |
class="parameter">valeur2</replaceable>, etc., comme valeurs de ses |
|---|
| 158 |
colonnes et <replaceable |
|---|
| 159 |
class="parameter">valeur_oid</replaceable> pour son OID. Si |
|---|
| 160 |
<replaceable class="parameter">valeur_oid</replaceable> vaut zéro |
|---|
| 161 |
(0) ou si la clause est omise, alors le prochain OID disponible est |
|---|
| 162 |
utilisé. |
|---|
| 163 |
</para> |
|---|
| 164 |
|
|---|
| 165 |
<para> |
|---|
| 166 |
Les valeurs NULL peuvent être indiquées en utilisant le mot clé spécial |
|---|
| 167 |
<literal>_null_</literal>. Les valeurs contenant des espaces doivent être |
|---|
| 168 |
entre des guillemets doubles. |
|---|
| 169 |
</para> |
|---|
| 170 |
</listitem> |
|---|
| 171 |
</varlistentry> |
|---|
| 172 |
|
|---|
| 173 |
<varlistentry> |
|---|
| 174 |
<term> |
|---|
| 175 |
declare <optional>unique</optional> index <replaceable |
|---|
| 176 |
class="parameter">nomindex</replaceable> on <replaceable |
|---|
| 177 |
class="parameter">nomtable</replaceable> using <replaceable |
|---|
| 178 |
class="parameter">nomma</replaceable> (<replaceable |
|---|
| 179 |
class="parameter">classeop1</replaceable> <replaceable |
|---|
| 180 |
class="parameter">nom1</replaceable> <optional>, ...</optional>) |
|---|
| 181 |
</term> |
|---|
| 182 |
|
|---|
| 183 |
<listitem> |
|---|
| 184 |
<para> |
|---|
| 185 |
Crée un index nommé <replaceable |
|---|
| 186 |
class="parameter">nomindex</replaceable> sur la table nommée |
|---|
| 187 |
<replaceable class="parameter">nomtable</replaceable> en utilisant la |
|---|
| 188 |
méthode d'accès nommée <replaceable class="parameter">nomma</replaceable>. |
|---|
| 189 |
Les champs de l'index sont appelés <replaceable |
|---|
| 190 |
class="parameter">nom1</replaceable>, <replaceable |
|---|
| 191 |
class="parameter">nom2</replaceable> etc., et les classes d'opérateur à |
|---|
| 192 |
utiliser sont respectivement <replaceable |
|---|
| 193 |
class="parameter">classeop1</replaceable>, <replaceable |
|---|
| 194 |
class="parameter">classeop2</replaceable> etc. |
|---|
| 195 |
</para> |
|---|
| 196 |
</listitem> |
|---|
| 197 |
</varlistentry> |
|---|
| 198 |
|
|---|
| 199 |
<varlistentry> |
|---|
| 200 |
<term>build indices</term> |
|---|
| 201 |
|
|---|
| 202 |
<listitem> |
|---|
| 203 |
<para> |
|---|
| 204 |
Construit les index précédemment déclarés. |
|---|
| 205 |
</para> |
|---|
| 206 |
</listitem> |
|---|
| 207 |
</varlistentry> |
|---|
| 208 |
</variablelist> |
|---|
| 209 |
|
|---|
| 210 |
</sect1> |
|---|
| 211 |
|
|---|
| 212 |
<sect1 id="bki-example"> |
|---|
| 213 |
<title>Exemple</title> |
|---|
| 214 |
|
|---|
| 215 |
<para> |
|---|
| 216 |
La séquence suivante de commandes créera la table |
|---|
| 217 |
<literal>test_table</literal> avec les deux colonnes |
|---|
| 218 |
<literal>cola</literal> et <literal>colb</literal> de type, respectivement, |
|---|
| 219 |
<type>int4</type> et <type>text</type> et insèrera deux lignes dans la |
|---|
| 220 |
table. |
|---|
| 221 |
<programlisting> |
|---|
| 222 |
create test_table (cola = int4, colb = text) |
|---|
| 223 |
open test_table |
|---|
| 224 |
insert OID=421 ( 1 "value1" ) |
|---|
| 225 |
insert OID=422 ( 2 _null_ ) |
|---|
| 226 |
close test_table |
|---|
| 227 |
</programlisting> |
|---|
| 228 |
</para> |
|---|
| 229 |
</sect1> |
|---|
| 230 |
</chapter> |
|---|
| 231 |
|
|---|
| 232 |
<!-- Keep this comment at the end of the file |
|---|
| 233 |
Local variables: |
|---|
| 234 |
mode:sgml |
|---|
| 235 |
sgml-omittag:nil |
|---|
| 236 |
sgml-shorttag:t |
|---|
| 237 |
sgml-minimize-attributes:nil |
|---|
| 238 |
sgml-always-quote-attributes:t |
|---|
| 239 |
sgml-indent-step:1 |
|---|
| 240 |
sgml-indent-data:t |
|---|
| 241 |
sgml-parent-document:nil |
|---|
| 242 |
sgml-default-dtd-file:"./reference.ced" |
|---|
| 243 |
sgml-exposed-tags:nil |
|---|
| 244 |
sgml-local-catalogs:("/usr/lib/sgml/catalog") |
|---|
| 245 |
sgml-local-ecat-files:nil |
|---|
| 246 |
End: |
|---|
| 247 |
--> |
|---|