Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

vấn đề trong việc tìm kiếm danh sách các tệp trong thư mục

Tôi đã làm điều gì đó dọc theo những dòng sau:

Tạo một thư mục Oracle cho thư mục bạn muốn liệt kê:

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

Tạo một bảng tạm thời:

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

Bạn sẽ cần một thủ tục được lưu trữ trong java:

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 };
      }
  }

  }

Và một thủ tục có thể gọi PL / SQL để gọi java:

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

Cuối cùng, việc gọi thủ tục get_dir_list bên trong biểu mẫu của bạn sẽ điền vào bảng với các tệp trong thư mục của bạn, sau đó bạn có thể đọc vào khối biểu mẫu của mình.

Mã java xuất phát ngay từ một cuốn sách của Tom Kyte (không nhớ cuốn sách nào).

CHỈNH SỬA:

Trên thực tế, tất cả mã được nâng lên khá nhiều từ chuỗi AskTom này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Quản trị cơ bản của Oracle 12c Multitenant

  2. Tuyên bố ORACLE IIF

  3. Làm thế nào để xuất kết quả của câu lệnh SELECT được thực thi bằng SQL động nguyên gốc?

  4. sử dụng các giá trị được phân tách bằng dấu phẩy bên trong mệnh đề IN cho cột NUMBER

  5. Cách xóa một phần của chuỗi trong oracle