このチュートリアルでは、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ファイル