このチュートリアルでは、Oracleデータベースにファイルを挿入する方法を学習します。ファイルの種類は、PDF、画像、または任意のドキュメントにすることができます。次の例を示すために、OracleテーブルのBLOBデータ型を使用しています。
これらの手順に従って、OracleデータベーステーブルのBLOB列にファイル(PDF、画像、Docx、Xlsxなど)を挿入します
- 次の例に示すように、BLOB列を使用してOracleデータベーススキーマにテーブルを作成します。
CREATE TABLE ext_files ( file_name VARCHAR2 (1000), file_content BLOB) /
- 次に、以下の例に示すように、ファイルを挿入する場所からデータベースディレクトリオブジェクトを作成します。
CREATE OR REPLACE DIRECTORY PDF_FILES As 'C:\my_pdf_files';
- 次に、ファイルをBLOBデータ型に変換する次の関数を作成します。ただし、以下の関数のPDF_FILESディレクトリ名を、ディレクトリオブジェクトを作成した名前に変更してください。
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; /
これで、Oracleデータベーステーブルにファイルを挿入するテストの準備が整いました。
PDFファイルを挿入するためのテスト
DECLARE v_blob BLOB; BEGIN v_blob := file_to_blob ('emp.pdf'); INSERT INTO ext_files VALUES ('emp.pdf', v_blob); COMMIT; END; /
画像ファイル(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; /
テーブルのレコードを確認する
SELECT * FROM EXT_FILES;
出力
関連項目:
- PL/SQLを使用してZIPファイルを解凍します
- PL/SQLのZIPファイル