My Application は UTL_FILE を使用して CSV ファイルを生成し、そのファイルを DB サーバーの場所に書き込みます。その後、SFTP はそのファイルを目的の共有場所に転送する必要があります。
最初の部分は完了しましたが、2 番目の部分、つまり PLSQL を使用した SFTP で助けが必要です
ありがとう
UTL_TCP
パッケージを使用して PL/SQL で SFTP クライアントを作成することは完全に可能ですが、それが実際的なアプローチになる可能性は低いです。一般に、いくつかのオプションがあります
DBMS_SCHEDULER
、Java ストアド プロシージャを使用または経由してそのシェル スクリプトを呼び出します。Oracle データベースが Windows で実行されている場合は、上記の 2 つのオプションのいずれかで、Java ストアド プロシージャではなく .Net ストアド プロシージャを作成することもできます。ただし、Java ストアド プロシージャの方がはるかに一般的です。
商用製品を試してみたい場合は、ORA_SFTPを確認してください。
次のようなコード ブロックを使用して、ファイルをアップロードできます。
DECLARE
connection_id NUMBER;
private_key_handle BFILE;
private_key BLOB;
PRIVATE_KEY_PASSWORD VARCHAR2(500);
BEGIN
DBMS_LOB.createtemporary(PRIVATE_KEY, TRUE);
private_key_handle := BFILENAME('PGP_KEYS_DIR', 'test_putty_private.ppk'); -- directory name must be Upper case
DBMS_LOB.OPEN(private_key_handle, DBMS_LOB.LOB_READONLY);
DBMS_LOB.LoadFromFile( private_key, private_key_handle, DBMS_LOB.GETLENGTH(private_key_handle) );
DBMS_LOB.CLOSE(private_key_handle);
PRIVATE_KEY_PASSWORD := 'changeit';
connection_id := ORA_SFTP.CONNECT_HOST('localhost', 22, 'nasko', private_key, private_key_password);
-- upload the private key just for a demo
ORA_SFTP.UPLOAD(connection_id, private_key, 'data.csv');
ORA_SFTP.DISCONNECT_HOST(connection_id);
END;
/
免責事項: 私は DidiSoft で働いています