想把一个excel文件读到oracle中,请问有什么办法?

解决方案 »

  1.   

    pl/sql语言直接读写EXCEL文件是应该不支持的,PL/SQL只能直接读写BIN类型文件。除非你了解EXCEL文件的格式,帮你顶,希望能有高手解答。
      

  2.   

    这个我明白,如果是文本文件呢?如:txt。怎么读进去?
      

  3.   

    CREATE OR REPLACE PROCEDURE preadfiletest (
       fpath     IN   STRING,
       fname     IN   STRING,
       max_num   IN   NUMBER
    )
    IS
       file_handle   UTL_FILE.file_type;
       text_buffer   STRING (1000);
       line_num      NUMBER;
    BEGIN
       DBMS_OUTPUT.put_line ('INPUT PATH=' || fpath);
       DBMS_OUTPUT.put_line ('INPUT FILENAME=' || fname);
       line_num := 0;   BEGIN
          file_handle := UTL_FILE.fopen (fpath, fname, 'R', max_num);      LOOP
             line_num := line_num + 1;
             UTL_FILE.get_line (file_handle, text_buffer);
             DBMS_OUTPUT.put_line ('LINE' || line_num || ' : ' || text_buffer);
          END LOOP;
       EXCEPTION
          WHEN NO_DATA_FOUND
          THEN
             RETURN;
          WHEN UTL_FILE.invalid_path
          THEN
             DBMS_OUTPUT.put_line ('INVALID PATH');
          WHEN UTL_FILE.invalid_mode
          THEN
             DBMS_OUTPUT.put_line ('INVALID MODE');
          WHEN UTL_FILE.invalid_filehandle
          THEN
             DBMS_OUTPUT.put_line ('INVALID FILEHANDLE');
          WHEN UTL_FILE.invalid_operation
          THEN
             DBMS_OUTPUT.put_line ('INVALID OPERATION');
          WHEN UTL_FILE.read_error
          THEN
             DBMS_OUTPUT.put_line ('READ ERROR');
          WHEN UTL_FILE.write_error
          THEN
             DBMS_OUTPUT.put_line ('WRITE ERROR');
          WHEN UTL_FILE.internal_error
          THEN
             DBMS_OUTPUT.put_line ('INTERNAL ERROR');
          WHEN OTHERS
          THEN
             DBMS_OUTPUT.put_line (SQLERRM);
       END;
    EXCEPTION
       WHEN OTHERS
       THEN
          DBMS_OUTPUT.put_line ('OTHER ERROR=' || SQLERRM);
    END preadfiletest;然后
    exec preadfiletest('d:\tmp', 'test.txt', 100);总是提示:'INVALID PATH '怎么解决,有没什么其他的方法读写文件??
      

  4.   

    是否设置了utl_file_dir参数?‘d:\tmp'目录是否存在,该用户是否有读写权限?
      

  5.   

    设置了,但现在再设怎么不行啊?
    SQL> ALTER SYSTEM SET UTL_FILE_DIR='d:\testtmp' scope=spfile;
    ALTER SYSTEM SET UTL_FILE_DIR='d:\testtmp' scope=spfile
                     *
    ERROR at line 1:
    ORA-02095: specified initialization parameter cannot be modified
      

  6.   

    希望用pl/sql读写文件,能实现吗?
      

  7.   

    用Oracle操作Excel??为何有如此需求,就像用Office编写企业应用程序,Office虽然强大,但是术业有专攻!
    兄弟!用POI吧!
      

  8.   

    utl_file_dir参数用命令
    SQL> ALTER SYSTEM SET UTL_FILE_DIR='d:\testtmp' scope=spfile;
    不行,要把动态参数文件转换为静态参数文件,用文本编辑器编辑后再转为动态参数文件。
    Oracle中有些参数是不能用ALTER SYSTEM SET命令修改的。