Utiliser la fonction file_move afin de déplacer et renommer un ensemble de fichiers depuis SAP Data Services

Dans ce tutoriel vous apprendrez à utiliser la fonction file_move afin de déplacer ou renommer des fichiers depuis SAP Data Services, vous apprendrez aussi comment sélectionner l’ensemble de fichiers à déplacer grâce à une expression régulière.

Prérequis :

Contexte :

Remarque : La fonction file_move() est une nouveauté des versions SAP Data Services 4.2.

Vous souhaitez, depuis un Job SAP Data Services, déplacer un ensemble de fichiers respectant une forme donnée vers un répertoire d’archives. Vous souhaitez aussi déplacer un autre fichier en le préfixant d’une chaîne de caractères indiquant la date et l’heure d’exécution du Job.

Voilà notre répertoire de travail. Nous souhaitons déplacer des fichiers issus de « Source » vers « Archive » :

Seuls les fichiers surlignés en vert ci – dessous doivent être archivés, car ce sont des fichiers CSV et des sorties de traitement, ce qui est arbitrairement indiqué par le préfixe « sortie_bods » :

Le fichier que l’on veut préfixer d’une date et heure d’exécution est le fichier sortie_bods_produits.

Solution :

Créer un Job (JOB_DEPLACE_FICHIER) et insérez un Workflow (WF_DEPLACE_FICHIER) dans lequel vous allez développer un script (SC_DEPLACE_FICHIER). Depuis le menu Options, « Variables », créez une variable locale $VAR_L_DATE_HEURE qui servira à stocker une chaîne contenant la date et l’heure :

Nous allons utiliser la fonction de conversion to_char() afin d’extraire depuis la date actuelle les champs de date sous forme de chaînes de caractères avant de les concaténer dans $VAR_L_DATE_HEURE :

La deuxième opérande de to_char doit contenir le format cible de la date, les formats utilisés puis concaténés sont :

  • ‘YYYY’ pour l’année.
  • ‘MM’ pour le mois.
  • ‘DD’ pour le jour.
  • ‘HH’ pour l’heure.
  • ‘MI’ pour la minute.
  • ‘SS’ pour la seconde.

La chaîne concaténée dans $VAR_L_DATE_HEURE aura donc le format « YYYYMMDD_HHMISS_ ».. Par exemple vous obtiendrez une chaîne 20200101_000000 pour le premier janvier 2020 à minuit.

Nous allons maintenant déplacer notre fichier en lui ajoutant le préfixe construit dans $VAR_L_DATE_HEURE grâce à la fonction file_move(). Cette fonction prend en argument le chemin du fichier source à déplacer, le nom du fichier une fois déplacé (en incluant son chemin) et un dernier paramètre « Flag » indiquant si le même fichier détecté en cible devra être écrasé (valeur Flag = 1 pour écraser) :

En sortie nous indiquons donc le chemin cible concaténé au préfixe $VAR_L_DATE_HEURE puis au nom du fichier déplacé. Indiquez par une sortie print que le déplacement a été effectué :

Validez le Job puis lancez son exécution. Le print permet de vérifier que le déplacement du fichier s’est bien déroulé sans erreur :

Le fichier a bien été déplacé vers le répertoire cible et préfixé :

Nous allons maintenant voir la deuxième utilisation de file_move. Afin de cibler seulement les fichiers source de type CSV préfixés par « sortie_bods » nous utilisons le wildcard « * » afin de construire une expression régulière ciblant exclusivement ces fichiers. Nous ne pouvons pas renommer simultanément ces fichiers, il faut donc indiquer seulement le chemin du répertoire cible en deuxième argument :

Validez puis lancez l’exécution du Job. Les fichiers désignés par l’expression régulière ont bien été déplacés vers le répertoire cible :

Vous savez désormais comment utiliser la fonction file_move afin de déplacer et/ou renommer un ensemble de fichiers depuis SAP Data Services, en sélectionnant éventuellement l’ensemble de fichiers grâce à une expression régulière.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *