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

script lấy dữ liệu từ tệp txt trong mệnh đề where

Nghe giống như một thư mục bên ngoài Oracle là hoàn hảo cho công việc. Hãy nhớ rằng cách tiếp cận này sẽ gặp nhiều khó khăn nếu đây là tệp văn bản mà người dùng có thể ghi vào. Người dùng sẽ làm hàng trăm điều mà bạn không bao giờ tin rằng có thể gây ra lỗi và hơn thế nữa .

Từ bài báo:

Tạo một thư mục

cấp quyền đọc, ghi trên thư mục data_dir cho your_user;

Tạo bảng bên ngoài

CREATE TABLE test_ext (
  test_code      VARCHAR2(5),
  test_name      VARCHAR2(50)
)
ORGANIZATION EXTERNAL (
  TYPE ORACLE_LOADER
  DEFAULT DIRECTORY ext_tab_data
  ACCESS PARAMETERS (
    RECORDS DELIMITED BY NEWLINE
    FIELDS TERMINATED BY ','
    MISSING FIELD VALUES ARE NULL
    (
      test_code      CHAR(5),
      test_name      CHAR(50)
    )
  )
  LOCATION ('test1.txt','test2.txt')
)
PARALLEL 5
REJECT LIMIT UNLIMITED;

và sau đó đọc từ bảng

SELECT *
    FROM   test_ext
    ORDER BY test_name;

Chỉnh sửa:bạn vẫn có thể thực hiện việc này với các thư mục không nằm trên máy chủ cơ sở dữ liệu nhưng yêu cầu nhiều công việc hơn và điều này gây ra nhiều rủi ro hơn đối với bảo mật cơ sở dữ liệu và chất lượng dữ liệu. Bạn có định thêm một thư mục mới mỗi khi người dùng mới được thêm vào không?

Các bước cho phép Oracle truy cập tệp nằm trên một máy khác (giả sử là hệ điều hành Windows)

  • tạo cửa sổ hoặc người dùng miền sẽ có quyền đọc tệp trên mọi thư mục mà bạn muốn truy cập
  • trên máy chủ cơ sở dữ liệu, hãy chạy services.msc và thay đổi người dùng mà dịch vụ cơ sở dữ liệu Oracle chạy sang người dùng miền mới của bạn. Thêm người dùng này vào nhóm cục bộ có tên ORA_DBA trên máy chủ cơ sở dữ liệu
  • khởi động lại cơ sở dữ liệu để các thay đổi có hiệu lực
  • tạo một thư mục trong cơ sở dữ liệu bằng đường dẫn như // clientPc / sharedFolder
  • cấp quyền đọc cho người dùng cơ sở dữ liệu của bạn
  • trên máy khách cấp quyền đọc cho người dùng miền trên thư mục đó
  • xác minh kết nối bằng cách sử dụng UTLFILE để đọc một tệp mẫu trên máy khách



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi oracle to_date hiển thị chữ không khớp với định dạng chuỗi

  2. Kích hoạt dựa trên sysdate

  3. Tạo chỉ mục trên bảng hiện có Oracle

  4. Cách in nhiều báo cáo có mã vạch \ hoặc nhiều mã vạch trong một báo cáo

  5. Tạo nhiều hơn một thủ tục trong một tệp SQL?