我的应用程序使用 UTL_FILE 生成一个 CSV 文件并将该文件写入数据库服务器位置,然后 SFTP 应将该文件传输到所需的共享位置。
第一部分已完成,第二部分需要帮助,即使用 PLSQL 的 SFTP
谢谢
虽然完全可以使用该UTL_TCP
包在 PL/SQL 中编写 SFTP 客户端,但这不太可能是一种实用的方法。一般来说,你有几个选择
DBMS_SCHEDULER
或通过 Java 存储过程调用该 shell 脚本。如果您的 Oracle 数据库在 Windows 上运行,您还可以在上述两个选项中的任何一个中编写一个 .Net 存储过程而不是 Java 存储过程。然而,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;
/
免责声明:我在滴滴软件工作