Service SQL IBM i (AS/400) · Fonction table
QSYS2.COMPARE_IFS
Comparer deux arborescences IFS
Compare deux arborescences de l'IFS, sur le même système ou sur un second (RDB), et signale les différences de noms ou d'attributs des objets.
À quoi ça sert
La fonction de table QSYS2.COMPARE_IFS parcourt deux chemins de départ (START_PATH_NAME1 et START_PATH_NAME2) et renvoie les écarts : chemin de chaque côté, nom de l'attribut et valeurs comparées (VALUE1, VALUE2).
Les options principales : SUBTREE_DIRECTORIES (YES par défaut) pour descendre dans les sous-répertoires, OBJECT_TYPE_LIST (*ALL par défaut) pour limiter les types d'objets, COMPARE_ATTRIBUTES pour choisir les attributs examinés et RDB2 pour comparer avec un autre système.
On s'en sert pour contrôler une sauvegarde ou une copie d'arborescence, ou pour vérifier que deux environnements portent les mêmes fichiers IFS. Le résultat peut être trié, filtré et conservé dans une table.
Résultat réel sur un IBM i 7.5
Ce que nous avons exécuté :
SELECT * FROM TABLE(QSYS2.COMPARE_IFS(START_PATH_NAME1 => '/tmp/jobisql', START_PATH_NAME2 => '/tmp/jobisql/copie', SUBTREE_DIRECTORIES => 'YES', COMPARE_ATTRIBUTES => 'NAMES'))
Ce que l'IBM i a renvoyé le 01/10/2026 (5 lignes au plus) :
| PATH_NAME1 Premier chemin | PATH_NAME2 Second chemin | ATTRIBUTE_NAME Nom de l'attribut | VALUE1 Première valeur | VALUE2 Seconde valeur |
|---|---|---|---|---|
| /tmp/jobisql/clients.csv | NULL | Unmatched PATH_NAME in QSYS2.IFS_OBJECT_STATISTICS | clients.csv | NULL |
| /tmp/jobisql/copie | NULL | Unmatched PATH_NAME in QSYS2.IFS_OBJECT_STATISTICS | copie | NULL |
| /tmp/jobisql/copie/bonjour.txt | NULL | Unmatched PATH_NAME in QSYS2.IFS_OBJECT_STATISTICS | copie/bonjour.txt | NULL |
| /tmp/jobisql/journal.txt | NULL | Unmatched PATH_NAME in QSYS2.IFS_OBJECT_STATISTICS | journal.txt | NULL |
| /tmp/jobisql/renomme.txt | NULL | Unmatched PATH_NAME in QSYS2.IFS_OBJECT_STATISTICS | renomme.txt | NULL |
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 noms de tous les objets de deux arborescences, en parcourant récursivement tous les sous-répertoires.
-- Description: Compare the names for all objects in two subtrees. Compare recursively
-- through the entire set of subdirectories.
SELECT * FROM TABLE(QSYS2.COMPARE_IFS(
START_PATH_NAME1 => '/usr/files.dir',
START_PATH_NAME2 => '/usrbackup/files.dir',
SUBTREE_DIRECTORIES => 'YES',
COMPARE_ATTRIBUTES => 'NAMES'
));
Bon à savoir
Sur une grande arborescence, commencez par la comparaison des noms seule (COMPARE_ATTRIBUTES => 'NAMES' dans l'exemple IBM) : elle est plus légère que celle de tous les attributs.
Paramètres
| Paramètre | Type | Par défaut | Signification |
|---|---|---|---|
START_PATH_NAME1 |
DOUBLE-BYTE CHAR LARGE OBJECT | obligatoire | Premier chemin de départ |
START_PATH_NAME2 |
DOUBLE-BYTE CHAR LARGE OBJECT | obligatoire | Second chemin de départ |
RDB2 |
VARCHAR(18) | NULL | Seconde base de données relationnelle (RDB) |
SUBTREE_DIRECTORIES |
VARCHAR(3) | 'YES' | Parcours des sous-répertoires |
OBJECT_TYPE_LIST |
VARCHAR(1000) | '*ALL' | Liste des types d'objets |
COMPARE_ATTRIBUTES |
VARCHAR(5) | NULL | Comparaison des attributs |
Colonnes renvoyées (5)
Afficher les 5 colonnes
| Colonne | Type | Signification |
|---|---|---|
PATH_NAME1 |
DOUBLE-BYTE CHAR LARGE OBJECT | Premier chemin |
PATH_NAME2 |
DOUBLE-BYTE CHAR LARGE OBJECT | Second chemin |
ATTRIBUTE_NAME |
GRAPHIC VARYING | Nom de l'attribut |
VALUE1 |
GRAPHIC VARYING | Première valeur |
VALUE2 |
GRAPHIC VARYING | Seconde valeur |