sql >> データベース >  >> RDS >> Oracle

Oracleデータベースにファイルを挿入する方法は?

    このチュートリアルでは、Oracleデータベースにファイルを挿入する方法を学習します。ファイルの種類は、PDF、画像、または任意のドキュメントにすることができます。次の例を示すために、OracleテーブルのBLOBデータ型を使用しています。

    これらの手順に従って、OracleデータベーステーブルのBLOB列にファイル(PDF、画像、Docx、Xlsxなど)を挿入します

    1. 次の例に示すように、BLOB列を使用してOracleデータベーススキーマにテーブルを作成します。
    CREATE TABLE ext_files (
    file_name VARCHAR2 (1000),
    file_content BLOB)
    /
    1. 次に、以下の例に示すように、ファイルを挿入する場所からデータベースディレクトリオブジェクトを作成します。
    CREATE OR REPLACE DIRECTORY PDF_FILES As 'C:\my_pdf_files';
    1. 次に、ファイルを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ファイル
    1. オフセットなしおよびオフセット対応の日時を減算することはできません

    2. LIKEワイルドカードを使用して列を検索(大文字と小文字を区別しない)するにはどうすればよいですか?

    3. MariaDBの日付と時刻の関数(完全なリスト)

    4. 2つの異なるテーブルを結合し、重複したエントリを削除します