Aller au contenu

Service SQL IBM i (AS/400) · Fonction table

QSYS2.IFS_READ

Lire un fichier de flux de l'IFS

Lit un fichier de flux de l'IFS et renvoie son contenu ligne par ligne, avec un numéro de ligne, directement dans une requête SQL.

À quoi ça sert

La fonction de table lit le fichier désigné par PATH_NAME et renvoie deux colonnes : LINE_NUMBER et LINE. Le découpage en lignes se règle avec END_OF_LINE (défaut ANY, c'est-à-dire n'importe quel marqueur de fin de ligne reconnu) et MAXIMUM_LINE_LENGTH. Le contenu est converti dans le CCSID du travail. IGNORE_ERRORS vaut YES par défaut.

On l'utilise pour exploiter dans une requête un journal applicatif, un fichier de configuration, un export CSV ou JSON déposé dans l'IFS, sans passer par un programme de copie. Le résultat se filtre, se découpe avec des fonctions SQL et s'insère dans une table.

Pour écrire dans un fichier de flux, la procédure complémentaire est QSYS2.IFS_WRITE.

Résultat réel sur un IBM i 7.5

Ce que nous avons exécuté :

SELECT * FROM TABLE(QSYS2.IFS_READ(PATH_NAME => '/tmp/jobisql/bonjour.txt', END_OF_LINE => 'CRLF'))

Ce que l'IBM i a renvoyé le 01/10/2026 (2 lignes au plus) :

LINE_NUMBER Numéro de ligne LINE Ligne
1 Bonjour depuis job-i.fr
2 Deuxieme ligne du fichier

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

Lire les données du fichier de flux /usr/file1, en coupant les lignes à chaque séquence retour chariot et saut de ligne ; le résultat est dans le CCSID du travail.

-- Description: Read the data from stream file /usr/file1. Break lines when a carriage 
 -- return/line feed sequence is encountered. The result will be in the job's CCSID.
   SELECT * FROM TABLE(QSYS2.IFS_READ(PATH_NAME => '/usr/file1', 
                                   END_OF_LINE => 'CRLF'));

Bon à savoir

Pour un fichier très volumineux, ajoute un filtre sur LINE_NUMBER ou une clause FETCH FIRST pour ne pas tout parcourir.

Paramètres

ParamètreTypePar défautSignification
PATH_NAME DOUBLE-BYTE CHAR LARGE OBJECT obligatoire Chemin
MAXIMUM_LINE_LENGTH INTEGER 2147483647 Longueur maximale d'une ligne
END_OF_LINE VARCHAR(4) 'ANY' Caractère de fin de ligne
IGNORE_ERRORS VARCHAR(3) 'YES' Ignorer les erreurs

Colonnes renvoyées (2)

Afficher les 2 colonnes
ColonneTypeSignification
LINE_NUMBER INTEGER Numéro de ligne
LINE CHAR LARGE OBJECT Ligne