Aller au contenu

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ètreTypePar défautSignification
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
ColonneTypeSignification
ATTRIBUTE_NAME GRAPHIC VARYING Nom de l'attribut
FILE1 GRAPHIC VARYING Premier fichier à comparer
FILE2 GRAPHIC VARYING Second fichier à comparer