ページの先頭行へ戻る
Enterprise Postgres 10 アプリケーション開発ガイド
FUJITSU Software

B.6.3 バックアップなどでファイルをコピーしたい

Oracleデータベース

CREATE PROCEDURE copy_file(fromname VARCHAR2, toname VARCHAR2) AS
BEGIN


    UTL_FILE.FCOPY('DIR1', fromname, 'DIR2', toname, 1, NULL);・・・(7)

    RETURN;

EXCEPTION
    WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('-- SQL Error --');

        DBMS_OUTPUT.PUT_LINE('ERROR : ' || SQLERRM );
        RETURN;
END;
/

set serveroutput on

call copy_file('file01.txt','file01_bk.txt');

FUJITSU Enterprise Postgres

CREATE FUNCTION copy_file(fromname VARCHAR, toname VARCHAR) RETURNS void AS $$
BEGIN
    PERFORM DBMS_OUTPUT.SERVEROUTPUT(TRUE);

    PERFORM UTL_FILE.FCOPY('/home/fsep', fromname, '/home/backup', toname, 1, NULL);・・・(7)
    RETURN;

EXCEPTION
    WHEN OTHERS THEN
        PERFORM DBMS_OUTPUT.PUT_LINE('-- SQL Error --');
        PERFORM DBMS_OUTPUT.PUT_LINE('ERROR : ' || SQLERRM );
        RETURN;
END;
$$
LANGUAGE plpgsql;


SELECT copy_file('file01.txt','file01_bk.txt');

(7) FCOPY
Oracleデータベースにおける記述形式

UTL_FILE.FCOPY(第1引数, 第2引数, 第3引数, 第4引数, 第5引数, 第6引数)

機能差異
Oracleデータベース

CREATE DIRECTORY文を使用している場合(Oracle9.2i以降)、ディレクトリ名にディレクトリ・オブジェクト名を指定します。

FUJITSU Enterprise Postgres

ディレクトリ名にディレクトリ・オブジェクト名は指定できません。

移行手順

以下の手順で移行してください。ディレクトリ・オブジェクト名と実際のディレクトリ名の対応の確認方法は、UTL_FILE_DIR/CREATE DIRECTORYを参照してください。

  1. “UTL_FILE.FCOPY”というキーワードでストアドプロシジャ内を検索し、呼び出し箇所を特定します。

  2. 第1引数、および第3引数のディレクトリ・オブジェクト名(例の'DIR1'と'DIR2')に対応する実際のディレクトリ名(例の'/home/fsep'と'/home/backup')を確認します。

  3. ディレクトリ・オブジェクト名(例の'DIR1'と'DIR2')を、1.で確認した実際のディレクトリ名(例の'/home/fsep'と'/home/backup')に置き換えます。