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

PL / SQLでファイルをZIPする方法は?

    このブログ投稿では、PL/SQLでファイルをZIPする例を示しています。このタスクを実行するためにAlexandriaPL/ SQLUtilLibraryを使用しています。 OracleDatabaseテーブルからExcelにデータをエクスポートする例で使用したものと同じライブラリ。次の手順に従って、OracleでPL/SQLを使用してZIPファイルを作成します。

    PL/SQLを使用してOracleでZIPファイルを作成する

    1. まず、次のリンク「ダウンロード」を使用して、GithubからAlexandria PL/SQLライブラリをダウンロードします。
    2. ファイルをダウンロードしたら、ファイルを解凍して、zip_util_pkg.pksとzip_util_pkg.pkbを見つけます。 \ alexandria-plsql-utils-master \ ora \内のファイル ディレクトリを作成し、Oracleデータベーススキーマでこれらのスクリプトを実行してインストールします。
    3. サポートされているオブジェクトが必要な場合は、フォルダ\alexandria-plsql-utils-master\を見つけてインストールします。
    4. ユーティリティパッケージと関連オブジェクトをインストールしました。次に、以下の例に示すように、スキーマにディレクトリオブジェクトを作成します。
    Create OR Replace Directory zip_files as 'c:\zip_files';
    1. 次に、同じスキーマに以下の関数を作成して、ファイルをBLOBに変換します。この関数は、PL /SQLzip_util_pkgパッケージを使用してZipファイルを作成するために使用されます。 また注意してください この関数を作成する前に、ZIP_FILESを変更してください。 上で作成したデータベースディレクトリオブジェクトのディレクトリ名。
    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;
    /

    テスト

    注: 次の例では、ファイルemp.datが上記で作成したZIP_FILESディレクトリに存在する必要があります。

    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;
    /

    これで、plsql_1.zipファイルのZIP_FILESディレクトリの場所を確認できます。

    複数のファイルをZIPするには

    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;
    /

    関連項目:

    • PL/SQLでファイルを解凍します
    • PL/SQLを使用してOracle11gでJSONファイルを作成する
    • OracleSQLDeveloperからExcelへのデータのエクスポート
    • PL/SQLを使用してPDFファイルを作成する
    1. ウェビナー:Postgresでのバンキング–金融アプリケーションの考慮事項[フォローアップ]

    2. SQL Server(T-SQL)でデータベースの照合を設定する方法

    3. MySQLによると:ドキュメント#1045-ユーザー'root' @'localhost'のアクセスが拒否されました(パスワードを使用:NO)

    4. PostgreSQLでのページングにカーソルを使用する