Dans cet article de blog, je donne un exemple pour compresser un fichier en PL/SQL. J'utilise Alexandria PL/SQL Util Library pour effectuer cette tâche. La même bibliothèque que j'ai utilisée pour l'exemple d'exportation de données vers Excel à partir d'une table de base de données Oracle. Suivez ces étapes pour créer un fichier ZIP en utilisant PL/SQL dans Oracle.
Créer un fichier ZIP dans Oracle à l'aide de PL/SQL
- Tout d'abord, téléchargez la bibliothèque Alexandria PL/SQL depuis le Github en utilisant le lien suivant Télécharger.
- Après avoir téléchargé le fichier, extrayez-le et localisez les fichiers zip_util_pkg.pks et zip_util_pkg.pkb fichiers dans \alexandria-plsql-utils-master\ora\ répertoire et exécutez ces scripts dans votre schéma de base de données Oracle pour l'installer.
- Si des objets pris en charge sont nécessaires, recherchez-les dans le dossier \alexandria-plsql-utils-master\ et installez-les.
- Vous avez installé le package d'utilitaires et les objets associés. Créez maintenant un objet répertoire dans votre schéma, comme illustré dans l'exemple ci-dessous.
Create OR Replace Directory zip_files as 'c:\zip_files';
- Créez ensuite la fonction ci-dessous dans le même schéma pour convertir un fichier en BLOB. Cette fonction sera utilisée pour créer un fichier Zip en utilisant le package PL/SQL zip_util_pkg. Notez également, qu'avant de créer cette fonction changez les ZIP_FILES nom du répertoire avec l'objet répertoire de votre base de données que vous avez créé ci-dessus.
CREATE OR REPLACE FUNCTION file_to_blob (p_file_name VARCHAR2) RETURN BLOB AS dest_loc BLOB := EMPTY_BLOB (); src_loc BFILE := BFILENAME ('ZIP_FILES', p_file_name); BEGIN DBMS_LOB.OPEN (src_loc, DBMS_LOB.LOB_READONLY); DBMS_LOB.CREATETEMPORARY (lob_loc => dest_loc, cache => TRUE, dur => DBMS_LOB.session); DBMS_LOB.OPEN (dest_loc, DBMS_LOB.LOB_READWRITE); DBMS_LOB.LOADFROMFILE (dest_lob => dest_loc, src_lob => src_loc, amount => DBMS_LOB.getLength (src_loc)); DBMS_LOB.CLOSE (dest_loc); DBMS_LOB.CLOSE (src_loc); RETURN dest_loc; END file_to_blob; /
Tester
Remarque : Dans l'exemple suivant, le fichier emp.dat doit exister dans le répertoire ZIP_FILES que nous avons créé ci-dessus.
DECLARE l_file1 BLOB; l_zip BLOB; BEGIN /* emp.dat should be in ZIP_FILES directory location */ l_file1 := file_to_blob ('emp.dat'); zip_util_pkg.add_file (l_zip, 'emp.dat', l_file1); zip_util_pkg.finish_zip (l_zip); /* it will create the zip file named plsql_1.zip in the ZIP_FILES directory */ zip_util_pkg.save_zip (l_zip, 'ZIP_FILES', 'plsql_1.zip'); END; /
Vous pouvez maintenant vérifier l'emplacement du répertoire ZIP_FILES pour le fichier plsql_1.zip.
Pour compresser plusieurs fichiers
DECLARE l_file1 BLOB; l_file2 BLOB; l_zip BLOB; BEGIN l_file1 := file_to_blob ('emp.dat'); l_file2 := file_to_blob ('scott.sql'); zip_util_pkg.add_file (l_zip, 'emp.dat', l_file1); zip_util_pkg.add_file (l_zip, 'scott.sql', l_file2); zip_util_pkg.finish_zip (l_zip); zip_util_pkg.save_zip (l_zip, 'ZIP_FILES', 'plsql_3.zip'); END; /
Voir aussi :
- Décompresser un fichier en PL/SQL
- Créer un fichier JSON dans Oracle 11g à l'aide de PL/SQL
- Exporter des données d'Oracle SQL Developer vers Excel
- Créer des fichiers PDF à l'aide de PL/SQL
-
Automatiser la récupération du numéro de version à partir des fichiers .Dtsx
-
Tout ce que vous devez savoir sur SQL Server JOINS
-
Principaux moyens d'augmenter l'efficacité de la base de données
-
Comment mettre à jour les tables liées dans Access 2016 après le déplacement de la base de données principale vers un nouvel emplacement