代码之家  ›  专栏  ›  技术社区  ›  Amir

在目录中查找文件列表时出现问题

  •  4
  • Amir  · 技术社区  · 14 年前

    我想检索一个特定文件夹中所有文件的列表,其中包括Oracle窗体和菜单、报表以及一些txt文件…

    您知道我如何以Oracle形式检索这些数据,并自动将它们插入到我的数据块中吗?

    我使用Oracle Form 6.0。

    2 回复  |  直到 7 年前
        1
  •  5
  •   DCookie    14 年前

    create or replace directory YOURDIR
      as '\path\to\your\directory';
    

    create global temporary table DIR_LIST
    (
      FILENAME VARCHAR2(255),
    )
    on commit preserve rows;
    grant select, insert, update, delete on DIR_LIST to PUBLIC;
    

    create or replace and compile java source named dirlist as
    import java.io.*;
      import java.sql.*;
      import java.text.*;
    
      public class DirList
      {
      public static void getList(String directory)
                         throws SQLException
      {
          File dir = new File( directory );
          File[] files = dir.listFiles();
          File theFile;
    
          for(int i = 0; i < files.length; i++)
          {
              theFile = files[i];
              #sql { INSERT INTO DIR_LIST (FILENAME)
                     VALUES (:theName };
          }
      }
    
      }
    

    CREATE OR REPLACE PROCEDURE get_dir_list(pi_directory IN VARCHAR2)
    AS LANGUAGE JAVA
    name 'DirList.getList(java.lang.String)';
    

    AskTom thread

        2
  •  3
  •   0xdb    7 年前

    mkdir /tmp/incoming
    
    cat >/tmp/incoming/readdir.sh<<eof
    #/bin/bash
    cd /tmp/incoming/
    /bin/ls -1
    eof
    # test files
    for i in {1..5}; do touch /tmp/incoming/invoice_no_$RANDOM.pdf; done
    

    create or replace directory incoming as '/tmp/incoming';
    
    Directory INCOMMING created.
    
    create table files (filename varchar2(255))
    organization external ( 
        type oracle_loader
        default directory incoming
        access parameters (
            records delimited by newline
            preprocessor  incoming:'readdir.sh'
            fields terminated by "|" ldrtrim
        )
    location ('readdir.sh')
    );
    /
    
    Table FILES created.
    
    select * from files;
    
    FILENAME                                                                       
    --------------------------------------------------------------------------------
    FILES_27463.log                                                                 
    invoice_no_20891.pdf                                                            
    invoice_no_2255.pdf                                                             
    invoice_no_24086.pdf                                                            
    invoice_no_30372.pdf                                                            
    invoice_no_8340.pdf                                                             
    readdir.sh                                                                      
    
     7 rows selected 
    

    Ask Tom thread