Service SQL IBM i (AS/400) · Fonction table
QSYS2.COMPARE_FILE
Comparer deux fichiers de base de données
Compare les attributs et les données de deux fichiers, dans deux bibliothèques ou sur deux systèmes (RDB), et renvoie les différences : l'outil idéal avant une mise en production.
À quoi ça sert
La fonction de table QSYS2.COMPARE_FILE compare un premier fichier (LIBRARY1, FILE1) à un second (LIBRARY2, FILE2). Si RDB2 est renseigné, le second fichier se trouve sur une autre base relationnelle, donc un autre système.
Deux paramètres choisissent ce qui est comparé : COMPARE_ATTRIBUTES (attributs du fichier) et COMPARE_DATA (contenu), tous deux à YES par défaut. PARALLEL_DEGREE (NONE par défaut) règle le degré de parallélisme. Le résultat contient le nom de l'attribut et les valeurs des deux fichiers.
Cas d'usage : vérifier qu'une table de test a la même structure que celle de production, ou qu'une copie ou une réplication est restée identique. Seul le SQL permet de trier et filtrer le résultat, ou de le stocker dans une table.
Résultat réel sur un IBM i 7.5
Ce que nous avons exécuté :
SELECT * FROM TABLE(QSYS2.COMPARE_FILE(LIBRARY1 => 'JOBISQL', FILE1 => 'CLIENT', LIBRARY2 => 'JOBISQL', FILE2 => 'CLIENT2')) ORDER BY ATTRIBUTE_NAME
Ce que l'IBM i a renvoyé le 01/10/2026 (5 lignes au plus) :
| ATTRIBUTE_NAME Nom de l'attribut | FILE1 Premier fichier à comparer | FILE2 Second fichier à comparer |
|---|---|---|
| Unmatched COLUMN_DEFAULT(ColumnDefault) in QSYS2.SYSCOLUMNS2 with COLUMN_NAME = CA | 0 | NULL |
| Unmatched COLUMN_DEFAULT(ColumnDefault) in QSYS2.SYSCOLUMNS2 with COLUMN_NAME = MAJ | CURRENT_TIMESTAMP | NULL |
| Unmatched DATA for MEMBER CLIENT VS CLIENT2 | RRN 2 | RRN 2 |
| Unmatched DATA for MEMBER CLIENT VS CLIENT2 | Extra RRN 5 | NULL |
| Unmatched DATA for MEMBER CLIENT VS CLIENT2 | NULL | Extra RRN 4 |
Données anonymisées : les noms de système, de profils, de
bibliothèques, de postes et les adresses IP ont été remplacés. Les objets du schéma
JOBISQL sont des objets de démonstration créés pour ce site.
L'exemple d'IBM
Comparer les données et les attributs du fichier T1 entre la bibliothèque de test TEST et la bibliothèque de production PROD.
-- Description: Compare the data and attributes for file T1 between the TEST
-- library and production libraries.
SELECT * FROM TABLE(QSYS2.COMPARE_FILE(LIBRARY1 => 'TEST',
FILE1 => 'T1',
LIBRARY2 => 'PROD',
FILE2 => 'T1'))
ORDER BY ATTRIBUTE_NAME;
Bon à savoir
La comparaison des données peut être longue sur de gros fichiers. Passez COMPARE_DATA à NO si seule la structure vous intéresse, ou utilisez PARALLEL_DEGREE pour accélérer le traitement.
Paramètres
| Paramètre | Type | Par défaut | Signification |
|---|---|---|---|
LIBRARY1 |
VARCHAR(10) | obligatoire | Bibliothèque du premier fichier à comparer |
FILE1 |
VARCHAR(10) | obligatoire | Premier fichier à comparer |
LIBRARY2 |
VARCHAR(10) | NULL | Bibliothèque du second fichier à comparer |
FILE2 |
VARCHAR(10) | NULL | Second fichier à comparer |
RDB2 |
VARCHAR(18) | NULL | Seconde base de données relationnelle (RDB) |
COMPARE_ATTRIBUTES |
VARCHAR(5) | 'YES' | Comparaison des attributs |
COMPARE_DATA |
VARCHAR(5) | 'YES' | Comparaison des données |
PARALLEL_DEGREE |
VARCHAR(4) | 'NONE' | Degré de parallélisme |
Colonnes renvoyées (3)
Afficher les 3 colonnes
| Colonne | Type | Signification |
|---|---|---|
ATTRIBUTE_NAME |
GRAPHIC VARYING | Nom de l'attribut |
FILE1 |
GRAPHIC VARYING | Premier fichier à comparer |
FILE2 |
GRAPHIC VARYING | Second fichier à comparer |