vendredi 7 octobre 2011

Load et unload sous Informix-4GL: des talents cachés

Bonjour à tous,

une fois n'est pas coutume, aujourd'hui nous allons faire très court. Vous connaissez tous les commandes SQL load et unload, utilisées pour charger et décharger le contenu de/vers une table à partir de/vers un fichier ascii plat et délimité.

Dans la document Informix 4GL, cette commande est qualifiée comme "non préparable", c'est à dire qu'on ne peut pas écrire de choses du genre:
LET statement = "LOAD FROM /tmp/monfichier.unl INSERT INTO matable"
PREPARE monordre FROM statement
EXECUTE monordre

Oui mais... ce qui n'est pas dit dans la documentation, mais qui est quand même supporté et qui marche très bien, c'est la forme suivante:
LET monfichier="/tmp/monfichier.unl"
LET ins_statement = "INSERT INTO matable"
LOAD FROM monfichier ins_statement

Même principe pour unload:
LET monfichier="/tmp/monfichier.unl"
LET sel_statement = "SELECT * FROM matable"
UNLOAD TO monfichier sel_statement 

Pas de quoi vous changer la vie, j'admets, mais quand même de quoi rendre bien des services, nommément  quand on a besoin d'avoir des load et unload dont la stucture est conditionnée par l'application, ou bien réécrire un simili dbexport en 4GL à partir de la table systables par exemple.

C'est tout :-)
A bientôt
Eric