积木首页 - 学院 - 软件测试 - 技术百科 - 问答 - 黄页 - 手册 - 站长工具 - 社区
登录 | 注册
积木技术社区 » Oracle » oracle存储过程ftp上传文件
打印 楼主:xihanmu 发表于 2011-08-10 14:15 [回复11次/有效10个,浏览196次]

oracle存储过程ftp上传文件

实现功能:
oracle服务器上有一个txt文本,然后再用ftp上传到一台远程机器(192.168.11.11)上。
在先问一下这样可不可以实现这种功能?
PROCEDURE ftpfile
IS
l_conn UTL_TCP.connection;
BEGIN
l_conn := ftp.login('192.168.11.11', '21', '1', '1');
ftp.ascii( l_conn);
ftp.put(p_conn => l_conn,
p_from_dir => '/tmp/',--服务器上的目录,操作系统是linux
p_from_file => 'emp.txt',--服务器上的文件名
p_to_file => 'emp.txt');--想要在11.11这台机器上生成的文件

ftp.logout(l_conn);
utl_tcp.close_all_connections;
END;
这段代码执行时一直报"non-existent directory or file for fileopen operation"
但是我服务器上有这个目录和文件啊。。是代码不对还是目录有问题呢???
2楼 发表于 2011-08-10 14:53
都没人用过这个存储过程上传文件吗
3楼 发表于 2011-08-10 14:54
顶你!!!!!!!!!!!
4楼 发表于 2011-08-10 15:24
远程机器(192.168.11.11)上 FTP服务开了没?没开的话肯定没法访问到远程机器上的目录的
5楼 发表于 2011-08-10 15:26
1、确定当前用户oracle具有/tmp/权限
2、设置utl_file_dir参数指向/tmp/
6楼 发表于 2011-08-10 16:00
远程机器上装个FTP软件,设置下文件要放的目录
7楼 发表于 2011-08-10 16:16
终于实现了。。。
这个变量 p_from_dir是路径的名字,不是直接的物理地址。
要用语句先插一个路径名:create or replace directory emp_dir as '/tmp';
可以用这个语句来查询是否创建成功: select * from all_directories;
代码如下。。。
PROCEDURE ftpfile
IS
l_conn UTL_TCP.connection;
BEGIN
l_conn := ftp.login('192.168.11.11', '21', '1', '1');
ftp.ascii( l_conn);
ftp.put(p_conn => l_conn,
p_from_dir => 'EMP_DIR',--这里的路径名注意要用大写
p_from_file => 'emp.txt',--服务器上的文件名
p_to_file => 'emp.txt');--想要在11.11这台机器上生成的文件

ftp.logout(l_conn);
utl_tcp.close_all_connections;
END;
8楼 发表于 2011-08-10 16:16
首先由权限,另外目录必须得目录正确。
9楼 发表于 2011-08-10 16:42
这台机器的ftp服务也是开了的,我把ftp这个方法注释掉,就不会报错了.
10楼 发表于 2011-08-10 16:50
用户是有/tmp/权限的,/tmp/emp.txt这个文件也是由这由存储过程生成的的.
11楼 发表于 2012-06-20 10:30
回复 8楼 李兆祥 的帖子
权限是目录权限么,我目录权限也赋了,还是报错
标题:
内容:

PHP: PHP技巧 - PHP基础 - PHP实例 - PHP错误代码 - 正则表达式 - 热门脚本语言: DOS命令 - vbs - CSS/HTML - python - perl - ruby - shell编程 - Powershell

JS: node.js - JS基础 - extjs - jQuery - JavaScript技巧

网址导航成语大全积木 TinyMCE 服务邮箱: Gimoohr(#)gmail.com
Copyright © 2008 Gimoo.Net  京ICP备05050695号