Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment insérer un fichier dans Oracle Database ?

Dans ce tutoriel, vous apprendrez à insérer un fichier dans la base de données Oracle. Le type de fichier peut être un PDF, une Image ou n'importe quel document. J'utilise le type de données BLOB dans la table Oracle pour illustrer l'exemple suivant.

Suivez ces étapes pour insérer un fichier (PDF, Image, Docx, Xlsx, etc.) dans la colonne BLOB de la table de la base de données Oracle

  1. Créez une table dans le schéma de base de données Oracle avec une colonne BLOB, comme illustré dans l'exemple ci-dessous.
CREATE TABLE ext_files (
file_name VARCHAR2 (1000),
file_content BLOB)
/
  1. Créez ensuite un objet de répertoire de base de données à partir duquel vous souhaitez insérer les fichiers, comme indiqué dans l'exemple ci-dessous.
CREATE OR REPLACE DIRECTORY PDF_FILES As 'C:\my_pdf_files';
  1. Créez maintenant la fonction suivante pour convertir un fichier en un type de données BLOB. Mais assurez-vous de changer le nom du répertoire PDF_FILES dans la fonction ci-dessous avec le nom que vous avez créé l'objet répertoire.
CREATE OR REPLACE FUNCTION file_to_blob(p_file_name VARCHAR2) RETURN BLOB AS
dest_loc BLOB := empty_blob();
src_loc BFILE := BFILENAME('PDF_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;
/

Vous êtes maintenant prêt pour le test d'insertion d'un fichier dans la table de la base de données Oracle.

Test pour insérer un fichier PDF

DECLARE
v_blob BLOB;
BEGIN
v_blob := file_to_blob ('emp.pdf');

INSERT INTO ext_files
VALUES ('emp.pdf', v_blob);

COMMIT;
END;
/

Test pour insérer un fichier image (JPG)

DECLARE
v_blob BLOB;
BEGIN
v_blob := file_to_blob ('oracle-18c-install-step-1.JPG');

INSERT INTO ext_files
VALUES ('oracle-18c-install-step-1.JPG', v_blob);

COMMIT;
END;
/

Vérifiez le tableau pour les enregistrements

SELECT * FROM EXT_FILES;

Sortie

Voir aussi :

  • Décompressez un fichier ZIP à l'aide de PL/SQL
  • Fichiers ZIP en PL/SQL