Home » Developer & Programmer » Forms » Processing a text file (6i)
Processing a text file [message #290984] |
Wed, 02 January 2008 08:27  |
AHMADF124
Messages: 30 Registered: January 2008 Location: KSA
|
Member |

|
|
Dear all,
I am trying to read a text file in order to process it, and inserting it in a table but an error occurred each time the following is the code I work on it and the attached file contains a sample of the text file that I want to process, all these to process a time attendance data, the major problem that the data inserted but with null values:
--IF :BLOCK3.PATH IS NOT NULL THEN
DECLARE
count1 number(3):=0;
P_FILE_NAME VARCHAR2(100);
RECORDS_file Text_IO.File_Type;
LINE VARCHAR2(1000);
EMP_NO1 NUMBER(20);
TRANS_DATE1 NUMBER(10);
TRANS_TIME1 NUMBER(10);
TRANS_TYPE1 VARCHAR2(25);
TRANS_STATUS1 VARCHAR2(100);
linebuf varchar2(1000);
BEGIN
P_FILE_NAME := :BLOCK3.PATH;
PUT_ZERO_LINE;
RECORDS_file := Text_IO.Fopen(P_FILE_NAME, 'r');
Text_IO.Get_Line(RECORDS_file, linebuf);
MESSAGE(LINEBUF);MESSAGE(LINEBUF);
LOOP
Text_IO.Get_Line(RECORDS_file, linebuf);
--message(P_FILE_NAME||'1');
--message(P_FILE_NAME||'1');
------------------------------------------------------------------
EMP_NO1 := TO_NUMBER (GET_SUB_STR(LINE,1));
TRANS_DATE1 := (GET_SUB_STR(LINE,2));
TRANS_TIME1 := (GET_SUB_STR(LINE,3));
TRANS_TYPE1 := (GET_SUB_STR(LINE,4));
TRANS_STATUS1 := (GET_SUB_STR(LINE,5));
------------------------------------------------------------------
begin
--///////////////////////////////////////////
INSERT INTO AAA (EMP_NO,TRANS_DATE,TRANS_TIME,TRANS_TYPE,TRANS_STATUS)
VALUES(EMP_NO1,TRANS_DATE1,TRANS_TIME1,TRANS_TYPE1,TRANS_STATUS1);
--///////////////////////////////////////////
message(TRANS_DATE1);message(TRANS_DATE1);
Text_IO.New_Line;
--EXIT WHEN EMP_NO1 = 000 ;
END LOOP;
COMMIT;
MESSAGE('ok ');
CLEAR_MESSAGE;
CLEAR_MESSAGE;
MESSAGE('PROCESSING CLOCK DATA COMPLETED');
Text_IO.Fclose(RECORDS_FILE);
--EXCEPTION WHEN OTHERS THEN
--Text_IO.Fclose(RECORDS_FILE);
END LOOP;
--ELSE
--MESSAGE('YOU SHOULD HAVE TO CHOSE A FILE');
--MESSAGE(' ');
--END IF ;
END;
I hope you to help me ASAP.
Regards
[EDITED by LF: added [code] tags. Renamed the topic; the original title was "Mr"]
Text File Sample one of it's lines:
02/12/07 10:18:10,IDENT,FAILED,0,bioa,,0,0,5.4,65535,0,0,0,0,0
[Upd djmartin: Extra lines received via PM.]
-
Attachment: HQ.LOG
(Size: 2.65KB, Downloaded 974 times)
[Updated on: Tue, 08 January 2008 17:15] by Moderator Report message to a moderator
|
|
|
|
|
|
Re: Processing a text file [message #292434 is a reply to message #292423] |
Tue, 08 January 2008 23:07   |
AHMADF124
Messages: 30 Registered: January 2008 Location: KSA
|
Member |

|
|
Hi ,
I serch for loops and ends of it I have 2 loops with 2 ends, but the problem now is the following erorr: ORA-302000, I search on the forum for this erorr but I can not find a specific reason there are many cuases for this erorr, the following is my code:
IF :BLOCK3.PATH IS NOT NULL THEN
DECLARE
count1 number(3):=0;
P_FILE_NAME VARCHAR2(100);
RECORDS_file Text_IO.File_Type;
LINE VARCHAR2(1000);
EMP_NO1 NUMBER(20);
TRANS_DATE1 NUMBER(10);
TRANS_TIME1 NUMBER(10);
TRANS_TYPE1 VARCHAR2(25);
TRANS_STATUS1 VARCHAR2(100);
linebuf varchar2(1000);
BEGIN
P_FILE_NAME := :BLOCK3.PATH;
PUT_ZERO_LINE;
RECORDS_file := Text_IO.Fopen(P_FILE_NAME, 'r');
Text_IO.Get_Line(RECORDS_file, linebuf);
MESSAGE(LINEBUF);MESSAGE(LINEBUF);
LOOP
Text_IO.Get_Line(RECORDS_file, linebuf);
--message(P_FILE_NAME||'1');
--message(P_FILE_NAME||'1');
------------------------------------------------------------------
EMP_NO1 := TO_NUMBER (GET_SUB_STR(LINE,1));
TRANS_DATE1 := (GET_SUB_STR(LINE,2));
TRANS_TIME1 := (GET_SUB_STR(LINE,3));
TRANS_TYPE1 := (GET_SUB_STR(LINE,4));
TRANS_STATUS1 := (GET_SUB_STR(LINE,5));
------------------------------------------------------------------
begin
--///////////////////////////////////////////
MESSAGE('10');
INSERT INTO AAA (EMP_NO,TRANS_DATE,TRANS_TIME,TRANS_TYPE,TRANS_STATUS)
VALUES(EMP_NO1,TRANS_DATE1,TRANS_TIME1,TRANS_TYPE1,TRANS_STATUS1);
--///////////////////////////////////////////
MESSAGE('1');
message(TRANS_DATE1);message(TRANS_DATE1);
Text_IO.New_Line;
EXIT WHEN EMP_NO1 = 000 ;
END LOOP;
COMMIT;
MESSAGE('ok ');
CLEAR_MESSAGE;
CLEAR_MESSAGE;
MESSAGE('PROCESSING CLOCK DATA COMPLETED');
Text_IO.Fclose(RECORDS_FILE);
--EXCEPTION WHEN OTHERS THEN
--Text_IO.Fclose(RECORDS_FILE);
END LOOP;
--ELSE
--MESSAGE('YOU SHOULD HAVE TO CHOSE A FILE');
--MESSAGE(' ');
END LOOP ;
END IF;
//////////////////////////////////////////////////////////
the attached file is a sample file for data to be processed.
What is your openion??
Regards,,,
-
Attachment: HQ.LOG
(Size: 2.42KB, Downloaded 978 times)
|
|
|
|
Re: Processing a text file [message #292485 is a reply to message #292436] |
Wed, 09 January 2008 01:08   |
AHMADF124
Messages: 30 Registered: January 2008 Location: KSA
|
Member |

|
|
Thank you for your response,
really now it is reading the text file but the problem now in inserting it in the table it inserting null values the following is last code:
DECLARE
count1 number(3):=0;
P_FILE_NAME VARCHAR2(100);
RECORDS_file Text_IO.File_Type;
LINE VARCHAR2(1000);
EMP_NO1 NUMBER(20);
TRANS_DATE1 NUMBER(10);
TRANS_TIME1 NUMBER(10);
TRANS_TYPE1 VARCHAR2(25);
TRANS_STATUS1 VARCHAR2(100);
linebuf varchar2(1000);
BEGIN
P_FILE_NAME := :BLOCK3.PATH;
PUT_ZERO_LINE;
RECORDS_file := Text_IO.Fopen(P_FILE_NAME, 'r');
Text_IO.Get_Line(RECORDS_file, linebuf);
MESSAGE(LINEBUF);MESSAGE(LINEBUF);
LOOP
Text_IO.Get_Line(RECORDS_file, linebuf);
--message(P_FILE_NAME||'1');
--message(P_FILE_NAME||'1');
------------------------------------------------------------------
EMP_NO1 := TO_NUMBER (SUBSTR(LINE,10,15));
TRANS_DATE1 := SUBSTR(LINE,1,5);
TRANS_TIME1 := SUBSTR(LINE,5,10);
TRANS_TYPE1 := SUBSTR(LINE,15,20);
TRANS_STATUS1 := SUBSTR(LINE,15,20);
------------------------------------------------------------------
--///////////////////////////////////////////
MESSAGE('10');
INSERT INTO AAA (EMP_NO,TRANS_DATE,TRANS_TIME,TRANS_TYPE,TRANS_STATUS)
VALUES(EMP_NO1,TRANS_DATE1,TRANS_TIME1,TRANS_TYPE1,TRANS_STATUS1);
--///////////////////////////////////////////
--MESSAGE('1');
message(TRANS_DATE1);message(TRANS_DATE1);
Text_IO.New_Line;
EXIT WHEN EMP_NO1 = 000 ;
END LOOP;
COMMIT;
MESSAGE('ok ');
CLEAR_MESSAGE;
CLEAR_MESSAGE;
MESSAGE('PROCESSING CLOCK DATA COMPLETED');
Text_IO.Fclose(RECORDS_FILE);
EXCEPTION WHEN OTHERS THEN
Text_IO.Fclose(RECORDS_FILE);
--END LOOP;
--ELSE
--MESSAGE('YOU SHOULD HAVE TO CHOSE A FILE');
--MESSAGE(' ');
--END LOOP ;
--END;
end;
///////////////////////////////////////////////////////
this is a sample of the line we need to process we need to take the date,time,status,empno from each line:
02/12/07 15:03:11,IDENT,OK,0,bioa,2750,0,0,0,11,0,0,0,0,0
So how we can do this??
Regards,,,
|
|
|
|
|
|
|
Goto Forum:
Current Time: Mon Mar 10 22:08:45 CDT 2025
|