<Précédent | Table des matières | Suivant>
rejoindre
À certains égards, rejoindre c'est comme paste en ce sens qu'il ajoute des colonnes à un fichier, mais qu'il utilise une méthode unique pour le faire. UNE rejoindre est une opération généralement associée à bases de données relationnelles où les données de plusieurs les tables avec un champ de clé partagée est combiné pour former un résultat souhaité.
Le rejoindre programme effectue la même opération. Il joint les données de plusieurs fichiers en fonction d'un champ de clé partagé.
Pour voir comment une opération de jointure est utilisée dans une base de données relationnelle, imaginons une très petite base de données composée de deux tables, chacune contenant un seul enregistrement. La première table, appelée CUSTOMERS, comporte trois champs : un numéro de client (CUSTNUM), le prénom du client (FNAME) et le nom de famille du client (LNAME) :
NUMERO DE CLIENT | FNOM | LNOM |
======== | ===== | ====== |
4681934 | John | Smith |
La deuxième table s'appelle COMMANDES et contient quatre champs : un numéro de commande (ORDER-NUM), le numéro de client (CUSTNUM), la quantité (QUAN) et l'article commandé (ITEM).
NUMÉRO DE COMMANDE | NUMERO DE CLIENT | QUAN | ARTICLE |
======== | ======= | ==== | ==== |
3014953305 | 4681934 | 1 | Widget bleu |
Notez que les deux tables partagent le champ CUSTNUM. Ceci est important car cela permet une relation entre les tables.
Effectuer une opération de jointure nous permettrait de combiner les champs des deux tables pour obtenir un résultat utile, comme préparer une facture. En utilisant les valeurs correspondantes dans les champs CUSTNUM des deux tables, une opération de jointure peut produire ce qui suit :
FNOM | LNOM | QUAN | ARTICLE |
===== | ===== | ==== | ==== |
John | Smith | 1 | Widget bleu |
Pour démontrer le rejoindre programme, nous devrons créer quelques fichiers avec une clé partagée. Pour ce faire, nous utiliserons notre distributions-par-date.txt déposer. A partir de ce fichier, nous allons construire deux fichiers supplémentaires, l'un contenant les dates de sortie (qui sera notre clé partagée pour cette démonstration) et les noms de version :
[moi@linuxbox ~]$ cut -f 1,1 distributions-par-date.txt > noms-distros.txt [moi@linuxbox ~]$ coller distros-dates.txt distros-names.txt > distros-key-names.txt
[moi@linuxbox ~]$ tête distributions-key-names.txt
11/25/2008 Fedora 10/30/2008 Ubuntu 06/19/2008 SUSE
05/13/2008 Fedora 04/24/2008 Ubuntu 11/08/2007 Fedora 10/18/2007 Ubuntu
[moi@linuxbox ~]$ cut -f 1,1 distributions-par-date.txt > noms-distros.txt [moi@linuxbox ~]$ coller distros-dates.txt distros-names.txt > distros-key-names.txt
[moi@linuxbox ~]$ tête distributions-key-names.txt
11/25/2008 Fedora 10/30/2008 Ubuntu 06/19/2008 SUSE
05/13/2008 Fedora 04/24/2008 Ubuntu 11/08/2007 Fedora 10/18/2007 Ubuntu
10/04/2007 SUSE
05/31/2007 Fedora 04/19/2007 Ubuntu
10/04/2007 SUSE
05/31/2007 Fedora 04/19/2007 Ubuntu
et le deuxième fichier, qui contient les dates de sortie et les numéros de version :
[moi@linuxbox ~]$ cut -f 2,2 distributions-par-date.txt > distributions-vernums.txt [moi@linuxbox ~]$ coller distros-dates.txt distros-vernums.txt > distro s-key-vernums.txt
[moi@linuxbox | ~]$ tête distros-key-vernums.txt |
11/25/2008 | 10 |
10/30/2008 | 8.10 |
06/19/2008 | 11.0 |
05/13/2008 | 9 |
04/24/2008 | 8.04 |
11/08/2007 | 8 |
10/18/2007 | 7.10 |
10/04/2007 | 10.3 |
05/31/2007 | 7 |
04/19/2007 | 7.04 |
Nous avons maintenant deux fichiers avec une clé partagée (le champ « date de sortie »). Il est important de préciser que les fichiers doivent être triés sur le champ clé pour rejoindre pour fonctionner correctement.
[moi@linuxbox ~]$ rejoindre distros-key-names.txt distros-key-vernums.txt | diriger
11/25/2008 Fedora 10
10/30/2008 Ubuntu 8.10
06/19/2008 SUSE 11.0
05/13/2008 Fedora 9
04/24/2008 Ubuntu 8.04
11/08/2007 Fedora 8
10/18/2007 Ubuntu 7.10
10/04/2007 SUSE 10.3
05/31/2007 Fedora 7
04/19/2007 Ubuntu 7.04
[moi@linuxbox ~]$ rejoindre distros-key-names.txt distros-key-vernums.txt | diriger
11/25/2008 Fedora 10
10/30/2008 Ubuntu 8.10
06/19/2008 SUSE 11.0
05/13/2008 Fedora 9
04/24/2008 Ubuntu 8.04
11/08/2007 Fedora 8
10/18/2007 Ubuntu 7.10
10/04/2007 SUSE 10.3
05/31/2007 Fedora 7
04/19/2007 Ubuntu 7.04
Notez également que, par défaut, rejoindre utilise un espace comme délimiteur de champ d'entrée et un seul espace comme délimiteur de champ de sortie. Ce comportement peut être modifié en spécifiant des options. Voir le rejoindre page de manuel pour plus de détails.