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 ?
Partager