0

My Application は UTL_FILE を使用して CSV ファイルを生成し、そのファイルを DB サーバーの場所に書き込みます。その後、SFTP はそのファイルを目的の共有場所に転送する必要があります。

最初の部分は完了しましたが、2 番目の部分、つまり PLSQL を使用した SFTP で助けが必要です

ありがとう

4

2 に答える 2

2

UTL_TCPパッケージを使用して PL/SQL で SFTP クライアントを作成することは完全に可能ですが、それが実際的なアプローチになる可能性は低いです。一般に、いくつかのオプションがあります

  1. 多くのJava SFTP ライブラリの 1 つを使用して Java ストアド プロシージャを作成し、その Java ストアド プロシージャを PL/SQL から呼び出します。
  2. サーバーのコマンドライン ユーティリティを使用して SFTP を実行するシェル スクリプトを作成しDBMS_SCHEDULER、Java ストアド プロシージャを使用または経由してそのシェル スクリプトを呼び出します。

Oracle データベースが Windows で実行されている場合は、上記の 2 つのオプションのいずれかで、Java ストアド プロシージャではなく .Net ストアド プロシージャを作成することもできます。ただし、Java ストアド プロシージャの方がはるかに一般的です。

于 2012-08-02T17:18:27.457 に答える
0

商用製品を試してみたい場合は、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 で働いています

于 2016-10-25T08:38:57.030 に答える