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

Nhập tệp .csv vào ứng dụng Oracle Forms

Tôi đã tìm thấy một giải pháp phù hợp cho tôi bây giờ. Có lẽ tôi có thể làm điều đó tốt hơn nhưng điều này giúp ích cho tôi cho đến nay.

Tôi đã tìm thấy Blog sau:http://tfathy.blogspot.de/2009/03/reading-from-file.html

Quy tắc hoạt động 100% bằng cách sao chép và dán và giúp tôi từ nay trở đi hoàn thành nhiệm vụ.

Có lẽ nó cũng có thể giúp ích cho bất kỳ ai khác.

Đây là mã giải pháp:

Reading From File 
March 19, 2009
--------------------------------------------------
Declare
  vfilename varchar2(500);
  in_file   Client_Text_IO.File_Type;
  linebuf   VARCHAR2(1800); 
BEGIN
    vfilename := client_get_file_name('c:/temp/', File_Filter=>'Comma Dialimeted Files (*.csv)|*.csv|'); 
    in_file := client_Text_IO.Fopen(vfilename, 'r');  
    GO_BLOCK('Emp'); 
    FIRST_RECORD;  
  LOOP
    Client_Text_IO.Get_Line(in_file, linebuf); 
    p_output_line(linebuf);
    Client_Text_IO.New_Line; 
    Next_record; 
  END LOOP; 
   FIRST_RECORD;
EXCEPTION
  WHEN no_data_found THEN
    Client_Text_IO.Put_Line('Closing the file...');
    Client_Text_IO.Fclose(in_file);
END;
-------------------------------------------------------
PROCEDURE p_output_line(p_line varchar2) IS 
vLINE VARCHAR2(4000);
vVALUE VARCHAR2(1000); 
vCOMMA_COUNT NUMBER;
vREPORT_DATE DATE;
BEGIN                    
 vLINE := p_line;
 vCOMMA_COUNT := LENGTH(vLINE)- LENGTH(REPLACE(vLINE,',','')); -- COUNT THE NUMBER OF COMMAS
  FOR I IN 1.. vCOMMA_COUNT+1 LOOP  
   vVALUE := SUBSTR(vLINE,1,INSTR(vLINE,',')-1);                             -- IF vLINE = 123,ABC,9877 THEN VVALUE WILL BE  123
    IF vVALUE IS NULL THEN
        vVALUE := vLINE;
    END IF;    
   vLINE := SUBSTR(vLINE,INSTR(vLINE,',')+1) ;                              -- CHANGE   123,ABC,9877 TO BE   ABC,9877  
   IF I = 1 THEN 
    :DATA.BMK_NAME := vVALUE; 
   ELSIF I = 2 THEN 
    vREPORT_DATE := last_day(to_date(vVALUE,'dd-mm-yyyy')); 
    :DATA.REPORT_DATE := vREPORT_DATE;
   ELSIF I = 3 THEN                 
    :DATA.BMK_RETURN := to_number(vVALUE);
   END IF;
  END LOOP; 
  EXCEPTION
    WHEN NO_DATA_FOUND THEN
    MESSAGE('Please Check the data type is appropriate on you excel file');
    MESSAGE('Please Check the data type is appropriate on you excel file');
END; 
-----------------------------------------------------------------------
-- notes
1- you must install webutil version 106 or later
2- make sure that you attached and compiled the webutill.pll scucessfuly


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cảnh báo thời gian chờ đợi dành cho cơ sở dữ liệu EM12c

  2. Hàm TO_DSINTERVAL () trong Oracle

  3. Làm thế nào để bạn giải thích kế hoạch giải thích của một truy vấn?

  4. Phương pháp thu thập:Các hàm trước &sau trong cơ sở dữ liệu Oracle

  5. Làm cách nào để đạt top 1 trong Oracle?