Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 2

SQL> conn sys as sysdba

Enter password:
Connected.
SQL> CREATE OR REPLACE DIRECTORY MYDIR AS 'C:\WORK';

Directory created.

SQL> grant read,write on directory MYDIR to hr;

Grant succeeded.

SQL> conn hr/hr


Connected.

Make a folder named WORK in your C Drive.

********************************************
For writing into a file
********************************************

DECLARE

L_HANDLER UTL_FILE.FILE_TYPE;

BEGIN

L_HANDLER := UTL_FILE.FOPEN('MYDIR', ' test_file.txt', 'W');

UTL_FILE.PUT_LINE(L_HANDLER, 'UTL_FILE write mode demonstration');


UTL_FILE.PUT_LINE(L_HANDLER, 'Hello World! How are you?');
UTL_FILE.PUT_LINE(L_HANDLER, 'Hello Again!');
UTL_FILE.FCLOSE(L_HANDLER);
END;
/

PL/SQL procedure successfully completed.

********************************************************************
For reading from a file and inserting data into a table
********************************************************************
Make a csv file name EMPLOYEES_DATA in you folder C:\WORK

SQL> create table EMP_INFO(


EMP_NO VARCHAR2(10),
ENAME VARCHAR2(10),
DEPTNO VARCHAR2(10),
HIRE_DATE DATE,
DNAME VARCHAR2(10),
DLOC VARCHAR2(10),
SALARY NUMBER(8,2),
JOB_ID VARCHAR2(20)
);
Table created.

DECLARE
F UTL_FILE.FILE_TYPE;
V_LINE VARCHAR2(1000);
VEMPNO VARCHAR2(10);
VENAME VARCHAR2(10);
VDEPTNO VARCHAR2(10);
VHIRE_DATE varchar2(30);
VDNAME VARCHAR2(10);
VDLOC VARCHAR2(10);
VSALARY varchar2(10);
VJOB_ID VARCHAR2(20);
BEGIN
F := UTL_FILE.FOPEN('MYDIR', 'EMPLOYEES_DATA.CSV', 'R');
IF UTL_FILE.IS_OPEN(F) THEN
LOOP
BEGIN
UTL_FILE.GET_LINE(F,V_LINE,1000);
IF V_LINE IS NULL THEN
EXIT;
END IF;
VEMPNO := REGEXP_SUBSTR(V_LINE, '[^,]+', 1, 1);
VENAME := REGEXP_SUBSTR(V_LINE, '[^,]+', 1, 2);
VDEPTNO := REGEXP_SUBSTR(V_LINE, '[^,]+', 1, 3);
VHIRE_DATE := REGEXP_SUBSTR(V_LINE, '[^,]+', 1, 4);
VDNAME := REGEXP_SUBSTR(V_LINE, '[^,]+', 1, 5);
VDLOC := REGEXP_SUBSTR(V_LINE, '[^,]+', 1, 6);
VSALARY := REGEXP_SUBSTR(V_LINE, '[^,]+', 1, 7);
VJOB_ID := REGEXP_SUBSTR(V_LINE, '[^,]+', 1, 8);

INSERT INTO EMP_INFO VALUES(VEMPNO,VENAME,VDEPTNO,TO_DATE(VHIRE_DATE,'DD-MM-


YYYY'), VDNAME,VDLOC,TO_NUMBER(VSALARY),VJOB_ID);
COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
EXIT;
END;
END LOOP;
END IF;
UTL_FILE.FCLOSE(F);
END;

You might also like