Configurer un traitement Transfert de fichier

Le plugin Transfert de fichier récupère un fichier publié à une adresse distante et le charge tel quel dans un jeu de données. Il ne transforme rien : il télécharge, puis dépose. C'est le plugin à choisir quand la source est un fichier — CSV, tableur, archive — mis à disposition en HTTPS, FTP ou SFTP. Ce cours le configure sur un fichier ouvert publié sur data.gouv.fr par la Ville de Paris : la disponibilité en temps réel des stations Vélib'.

1. Prérequis

1.1 Relever l'adresse du fichier

Le traitement a besoin de l'adresse de téléchargement direct du fichier, pas de celle de la page qui le présente. Sur data.gouv.fr, chaque fichier d'un jeu de données est décrit par son nom, son format et son poids [1] : repérez celui au format CSV. L'adresse à copier est celle de son bouton Télécharger [2] — clic droit, Copier l'adresse du lien — ou celle que donne le bouton de copie affiché à côté du nom du fichier.

Une bonne adresse est stable : elle doit continuer à pointer vers la dernière version du fichier après chaque mise à jour de la source, sans quoi le traitement rechargera indéfiniment la même version. Le lien permanent d'une ressource data.gouv.fr (https://www.data.gouv.fr/api/1/datasets/r/<identifiant>) joue ce rôle : il redirige toujours vers le fichier actuel du producteur, ici l'export CSV du portail open data de la Ville de Paris ; méfiez-vous en revanche des adresses qui contiennent une date ou un numéro de version, elles se périment.

La ressource sur data.gouv.fr
Les fichiers du jeu de données Vélib' sur data.gouv.fr : le CSV et son bouton Télécharger

1.2 Réunir les identifiants, si la source est protégée

Si le fichier est public — c'est le cas ici — l'adresse suffit. S'il est déposé sur un espace protégé, demandez à son gestionnaire un identifiant et un mot de passe : le compte d'un serveur FTP ou SFTP, ou les identifiants d'une authentification HTTP basique. Un serveur SFTP peut aussi demander une clé SSH privée à la place du mot de passe. Le traitement ne sait pas se connecter autrement : ni formulaire de connexion, ni jeton dans un en-tête.

2. Configuration

Les champs propres au plugin sont regroupés dans l'onglet Paramètres. Le premier onglet, Jeu de données, ainsi que la planification, l'exécution et les permissions, sont communs à tous les traitements : ils sont décrits dans le cours Programmer des mises à jour automatiques de données.

Seule particularité de l'onglet Jeu de données pour ce plugin : une troisième action, Mettre à jour des lignes d'un jeu de données (incrémental), verse les lignes du fichier dans un jeu de données éditable existant, selon le Séparateur de colonnes choisi, au lieu de remplacer tout son contenu.

L'onglet Paramètres du plugin Transfert de fichier
L'onglet Paramètres : seule l'URL source est renseignée pour ce fichier public

2.1 Désigner la source

L'URL source [1] est le seul champ obligatoire. Écrivez l'adresse complète, protocole compris : le plugin accepte http://, https://, ftp:// et sftp://, et c'est ce préfixe qui lui indique comment se connecter. Ici, c'est le lien permanent relevé sur data.gouv.fr.

Utilisateur [2] et Mot de passe [3] ne servent qu'aux sources protégées : laissez-les vides pour une source publique comme celle de ce cours. Ils valent pour les trois familles de protocoles — compte du serveur en FTP et SFTP, authentification basique en HTTP(S). Le mot de passe est saisi masqué et n'est jamais réaffiché.

Clé SSH privée [4], uniquement pour une URL sftp:// : pour un serveur qui authentifie par clé, collez la clé privée complète, de la ligne -----BEGIN … PRIVATE KEY----- à sa ligne de fin, et renseignez l'Utilisateur [2] du compte ; le mot de passe peut alors rester vide. Une clé protégée par une phrase secrète n'est pas prise en charge. Comme le mot de passe, la clé est mise à l'abri dès l'enregistrement et n'est jamais réaffichée.

2.2 Ajuster la lecture du fichier

Les trois champs suivants sont facultatifs et conviennent le plus souvent laissés vides. Ce sont les réglages à sortir quand l'import se passe mal.

Nom du fichier [5]. Par défaut, c'est le nom du fichier sur le serveur FTP ou SFTP ; en HTTP(S), celui qu'annonce le serveur dans sa réponse (en-tête Content-Disposition), à défaut la fin de l'adresse. Ici, l'adresse ne se termine pas par un nom de fichier, mais le serveur annonce velib-disponibilite-en-temps-reel.csv : le champ reste vide. Renseignez-le quand ni l'adresse ni le serveur ne donnent un nom avec son extension — une URL d'API, par exemple : c'est l'extension de ce nom qui indique à la plateforme comment lire le contenu. C'est le remède à l'erreur 400 - ... type is not supported. Le nom choisi sera aussi celui proposé au téléchargement du fichier source depuis le jeu de données.

Encodage du fichier [6]. Laissé vide, l'encodage est détecté automatiquement. Forcez-le quand les accents ressortent en caractères parasites dans le jeu produit (é au lieu de é) : indiquez alors l'encodage réel du fichier, souvent windows-1252 ou ISO-8859-1 pour un export bureautique ancien, UTF-8 sinon.

Ignorer les N première lignes [7]. Certains fichiers commencent par un bandeau de titre ou de commentaires avant la ligne d'en-têtes. Sans ce réglage, la plateforme prend la première ligne de ce bandeau pour les noms de colonnes et tout le jeu de données part de travers. Indiquez le nombre de lignes à sauter pour que la lecture démarre sur la vraie ligne d'en-têtes.

2.3 Supprimer le fichier source après import

Supprimer le fichier source après import (FTP/SFTP uniquement) [8]. Cochée, cette case fait du serveur une boîte de dépôt : après chaque import réussi, le traitement supprime le fichier du serveur FTP ou SFTP ; quand le fichier est absent, parce que rien n'a été déposé depuis la dernière exécution, l'exécution s'arrête sans erreur et disparaît de l'historique. Planifié à intervalle court, le traitement importe ainsi chaque dépôt une seule fois.

L'option est sans effet sur une source HTTP(S). Ne la cochez que si le compte a le droit de supprimer des fichiers sur le serveur, et que personne d'autre n'a besoin du fichier après l'import.

3. Résultat

Le traitement télécharge le fichier, puis le charge tel quel dans le jeu de données, sans renommage ni sélection de colonnes. Son journal d'exécution indique le nom sous lequel le fichier a été récupéré [1] : c'est l'extension de ce nom qui guide la lecture, et c'est sous ce nom que le fichier d'origine reste téléchargeable depuis le jeu de données.

Journal d'exécution du traitement Transfert de fichier
Le journal d'une exécution : le fichier téléchargé, puis son chargement dans le jeu de données

Le jeu de données produit compte une ligne par station, soit environ 1 500 enregistrements, et reprend les colonnes de l'en-tête du CSV. La colonne Coordonnées géographiques contient la latitude et la longitude de chaque station, mais la plateforme ne la reconnaît pas d'elle-même : associez-lui le concept Latitude / Longitude (voir Ajout de métadonnées, de concepts et demande de publication) et les stations s'affichent sur une carte.

Les stations Vélib' du jeu de données produit, sur une carte
Les stations Vélib' une fois la colonne de coordonnées associée au concept Latitude / Longitude

À chaque exécution suivante, le fichier est re-téléchargé à la même adresse et remplace intégralement le contenu du jeu de données : après la première exécution, l'action du traitement passe d'elle-même à Mettre à jour un jeu de données (fichier). Pour une source temps réel comme celle-ci, une planification à intervalle court garde le jeu de données à jour.

💡 Ce plugin importe un fichier à la fois. Pour récupérer plusieurs fichiers d'un même serveur, ne chaînez pas un traitement par fichier : le connecteur de catalogue SFTP parcourt l'arborescence du serveur et vous laisse importer les ressources voulues depuis une seule configuration. Voir Configurer un connecteur SFTP.


Si vous avez des remarques sur ce cours, n'hésitez pas à nous les communiquer.