Bonjour,

Je vous propose un nouvel élément à utiliser : Extraire le contenu d'une table ou générer les ordres d'insertion

Ce script contient la définition d'une procédure stockée (EXTRACTION_TABLE.PRC) qui permet d'extraire dans un répertoire (DIRECTORY) particulier et un fichier nommé soit :



Les lignes de la table avec le séparateur souhaité

Les ordres d'insertion correspondant à la sélection



Cette procédure permet d'indiquer les particularités suivantes :



le caractère de séparation des colonnes (par défaut la virgule)

le format des dates (par défaut 'DD/MM/YYYY')

une clause WHERE

une clause ORDER BY





Voici les paramètres qu'accepte la procédure



CREATE OR REPLACE PROCEDURE Extraction_Table ( PC$Table in Varchar2, -- Nom de la table a extraire PC$Fichier in Varchar2, -- Nom du fichier de sortie PC$Repertoire in Varchar2, -- Nom du directory de sortie PC$Separateur in Varchar2 Default ',', -- Caractere de separation PC$Entetes in Varchar2 Default 'O', -- Affichage de l'entete des colonnes PC$DateFMT in Varchar2 Default 'DD/MM/YYYY', -- Format des dates PC$Where in Varchar2 Default Null, -- Clause Where de filtrage PC$Order in Varchar2 Default Null -- Colonne de tri ) IS



PC$Table reçoit le nom de la table à extraire

PC$Fichier reçoit le nom du fichier d'extraction

PC$Repertoire reçoit le nom du répertoire d'extraction

PC$Separateur reçoit le caractère de séparation des colonnes (sans effet pour la génération des ordres d'insertion)

PC$Entetes peut prendre 3 valeurs :



'O' demande l'extraction des lignes avec affichage de l'entête des colonnes

'I' demande la génération des ordres d'insertion

'O' et 'I' demande l'extraction des lignes sans entête de colonnes



PC$DateFMT reçoit le format d'extraction des dates

PC$Where reçoit une éventuelle clause de filtrage

PC$Ordre reçoit une éventuelle clause de tri



Quelques exemples d'utilisation :



Extraire dans un fichier les lignes de la table EMP avec entête de colonne, séparées par un point-virgule



Extraction_table ( PC$Table => 'EMP' , PC$Repertoire => 'FIC_OUT' , PC$Separateur => ';' ) ;



Générer les ordres d'insertion pour la table EMP avec format des dates 'DD/MM/YYYY HH24:MI:SS' dont le job est 'CLERK'



Extraction_Table ( PC$Table => 'EMP' , PC$Repertoire => 'FIC_OUT' , PC$Entetes => 'I' , PC$DateFMT => 'DD/MM/YYYY HH24:MI:SS' , PC$Where => 'JOB = ''CLERK''' ) ;



Si vous souhaitez également n'extraire que certaines colonnes de la table, la procédure est aisément modifiable, en lui passant en paramètre supplémentaire, une collection contenant les colonnes à extraire.



Le fichier extraction_table.zip contient deux procédures :



extraction_table_8i.prc pour une base 8i

extraction_table_9i.prc pour une base 9i





Qu'en pensez-vous ?