本人现在为了把每天生成出来的数据 通过SFTP 的方式传到服务器上,但是遇到一些问题。1.现在数据每天是有 Oracle 中自动跑出,把文件生成到指定的目录下面。2.为了把每天备份出来的数据自动SFTP上传到服务器上面,需要编写脚本。3.因UTL_FTP包执行效率太低,考虑每天数据将近有1G左右。所以考虑Oracle 调用 JAVA 用 java实现此功能。4.我看到网上介绍,java制作SFTP 需要用到 import java.io.File;
                                        import java.io.FileInputStream;
                                        import java.io.FileNotFoundException;
                                        import java.io.FileOutputStream;
                                        import java.io.IOException;
                                        import java.io.InputStream;
                                        import java.io.InputStreamReader;
                                        import java.io.LineNumberReader;
                                        import java.util.ArrayList;
                                        import java.util.List;
                                        import java.util.Properties;                                        import com.jcraft.jsch.Channel;
                                        import com.jcraft.jsch.ChannelSftp;
                                        import com.jcraft.jsch.JSch;
                                        import com.jcraft.jsch.Session;
                                        import com.jcraft.jsch.SftpException;
  这些包,但是Oracle提供的LIB下面只有 java.io 和 java.util 包 并没有 com.jcraft.* 包所以比较棘手。
  后来我将rt.jar包解压,把 com.jcraft.* 放入里面再次打包。但是重启Oracle后,Oracle中仍然找不到包。
  
========================================================================================================
  因程序比较急
  望知道的朋友们给我个提示。
  1.如果有朋友知道如何在Oracle中添加JAR包,请和我说下。
  2.我在做备份的时候,Oracle的生成路径Directory只能写死,如果有朋友知道如何在编写Oracle Procedure 的时候,JOB每天自动生成数据的时候,Oracle能自动创建好文件夹方式,也请给我提示。
 
  我必重谢~~~另多加分~~
 

解决方案 »

  1.   

    在Oracle中添加JAR包,请参考:
    http://translate.google.com.hk/translate?hl=zh-CN&langpair=en|zh-CN&u=http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/consolehelp/jars.html
      

  2.   

    可以动态创建目录,参考sql:
    begin
       execute immediate 'create directory utl_file_dir as ''c:\temp''';
    end;
      

  3.   

    需要用到java吗?操作系统中都是自带FTP的,可以编写一个脚本(linux)或批处理(windows)定时执行就可以了。
    另外,导出数据用也有很多方法,给出你的ORACLE版本和具体操作系统环境和要求,然后找一个较好的方案。
      

  4.   

    2楼的兄弟~~
    你真猥琐~~这个办法你也能想到~~小弟真佩服~呵呵~
    但是你有没有想到一个问题,create directory 是创建一个指定的目录,而不是创建一个目录。
    如果这样,例如
    E:\databackup\
    20100401  --文件夹
    20100402  --文件夹
    20100403  --文件夹
    20100404  --文件夹
    ...       --文件夹我每天要新增一个文件夹,把当天备份的数据放进去。用你这种方法,ORACLE就不能找到最新那天的路径。
    此时我就要手动去服务器上面创建一个当天的目录,那么我就失去了自动化的意义。
      

  5.   

    3楼的哥们~~
    我是在 LINUX 上面创建了一个 shell 脚本自动上传FTP~~
    但是有个问题就是,我不好在服务器上面创建 当天的目录。所以我要在本地把目录创建好,然后再将目录连文件一起上传至接口机上。
    例如: 本地备份机
    E:\databackup\
    20100401 --文件夹
    20100402 --文件夹
    20100403 --文件夹
    20100404 --文件夹
    ... --文件夹FTP接口机
    ..\jsgame\data\
    20100401\day\数据文件存放处  --文件夹
    20100402\day\数据文件存放处  --文件夹
    20100403\day\数据文件存放处  --文件夹
    20100404\day\数据文件存放处  --文件夹
    .....                      --文件夹所以我的FTP上传路径只能定在JSGAME\DATA\ 目录下,但是我每天是需要在服务器上面有20100401\day\的文件目录,然后再在里面放数据文件。
    故然我要在本地每天创建目录。
      

  6.   

    能不能用ant 就不用每次添加一个文件夹 而是每次启动ANT ,让ANT自动删除再重新创建呢?
    我只是菜鸟``如果不对不要骂我  呵呵