Aller au contenu

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ètreTypePar défautSignification
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
ColonneTypeSignification
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