Friday 13 July 2012

Import export d'un CLOB







1- Export d'un CLOB

le présent article vous montre une méthode simple pour l'export du contenu d'un type CLOB sur un système de fichier.

Premiérement on doit crée un repértoire(directory) qui pointera sur le clob à exporter.


 

 CREATE OR REPLACE DIRECTORY fichier AS 'C:\Images\';
SQL> Directory created.



On va lire le contenu du CLOB pour l'écrire(Enregistrer) dans le répertoire crée précédemment.



 


SQL> SET SERVEROUTPUT ON
SQL>DECLARE
2 l_file    UTL_FILE.FILE_TYPE;
3 l_clob    CLOB;
4 l_buffer  VARCHAR2(32767);
5  l_amount  BINARY_INTEGER := 32767;
6  l_pos     INTEGER := 1;
6 BEGIN
7   SELECT col1
8  INTO   l_clob
9  FROM   tab1
10  WHERE  rownum = 1;

11  l_file := UTL_FILE.fopen('FICHIER', 'Test01.txt', 'w', 32767);

12  LOOP
13      DBMS_LOB.read (l_clob, l_amount, l_pos, l_buffer);
14      UTL_FILE.put(l_file, l_buffer);
15      l_pos := l_pos + l_amount;
16   END LOOP;
17  EXCEPTION
18  WHEN NO_DATA_FOUND THEN
19    UTL_FILE.fclose(l_file);
20  WHEN OTHERS THEN
21    UTL_FILE.fclose(l_file);
22    RAISE;
23  END;
/
PL/SQL procedure successfully  completed.

Remarque: l’arrêt du processus est fait par le biais de l'exception NO_DATA_FOUND.D'autre exception pouvent causer l'arrêt

de l'écriture dans le répertoire, pour cela vous pouvez vous referez au package:UTL_FILE pour gérer d'autre exception

2- Import d'un CLOB
On va utiliser le répertoire crée précédent pour faire enregistrer le fichier dans le CLOB.

On va crèer la table qui va servir comme sauvgarde de notre fichier text.


 




SQL>CREATE TABLE tab1 (
  id_file        NUMBER,
  clob_data      CLOB
);
Table created


On va importer notre fichier text et l'insérer dans la table par le processu suivant:



 




SQL>DECLARE
2  l_bfile  BFILE;
3  l_clob   CLOB;
4 BEGIN
5  INSERT INTO tab1 (id_file, clob_date)
6  VALUES (1, empty_clob())
7  RETURN clob_data INTO l_clob;

8  l_bfile := BFILENAME('FICHIER', 'Test01.txt');
9  DBMS_LOB.fileopen(l_bfile, DBMS_LOB.file_readonly);
10  DBMS_LOB.loadfromfile(l_clob, l_bfile, DBMS_LOB.getlength(l_bfile));
11  DBMS_LOB.fileclose(l_bfile);
12   COMMIT;
13 END;
/
PL/SQL procedure successfully  completed.


No comments:

Post a Comment