To create a file, we need to create a directory and have the read write permission as
1) create or replace directory MYDIR as '/home/oracle/file';
Note: /home/oracle/file has to be physical location on disk.
2) grant read, write on directory MYDIR to scott;
Following is the pl/sql sample code to create CSV file
DECLARE
F UTL_FILE.FILE_TYPE;
CURSOR C1 IS SELECT EMPNO,
ENAME,
SAL,
E.DEPTNO,
DNAME
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
ORDER BY EMPNO;
C1_R C1%ROWTYPE;
BEGIN
F := UTL_FILE.FOPEN('MYDIR','EMP_DEPT.CSV','w',32767);
FOR C1_R IN C1
LOOP
UTL_FILE.PUT(F,C1_R.EMPNO);
UTL_FILE.PUT(F,','||C1_R.ENAME);
UTL_FILE.PUT(F,','||C1_R.SAL);
UTL_FILE.PUT(F,','||C1_R.DEPTNO);
UTL_FILE.PUT(F,','||C1_R.DNAME);
UTL_FILE.NEW_LINE(F);
END LOOP;
UTL_FILE.FCLOSE(F);
END;
/
C1_R C1%ROWTYPE;
BEGIN
F := UTL_FILE.FOPEN('MYDIR','EMP_DEPT.CSV','w',32767);
FOR C1_R IN C1
LOOP
UTL_FILE.PUT(F,C1_R.EMPNO);
UTL_FILE.PUT(F,','||C1_R.ENAME);
UTL_FILE.PUT(F,','||C1_R.SAL);
UTL_FILE.PUT(F,','||C1_R.DEPTNO);
UTL_FILE.PUT(F,','||C1_R.DNAME);
UTL_FILE.NEW_LINE(F);
END LOOP;
UTL_FILE.FCLOSE(F);
END;
/
After the execution of above procedure, a file (EMP_DEPT.CSV) would have been created at "/home/oracle/file/" location.
just ope your file and check it
7369,SMITH,1300,20,RESEARCH
7499,ALLEN,2100,30,SALES
7521,WARD,1200,30,SALES
7566,JONES,3475,20,RESEARCH
7654,MARTIN,1200,30,SALES
7698,BLAKE,3350,30,SALES
7782,CLARK,2950,10,ACCOUNTING
7788,SCOTT,3700,20,RESEARCH
7839,KING,5500,10,ACCOUNTING
7844,TURNER,2000,30,SALES
7876,ADAMS,1600,20,RESEARCH
7900,JAMES,1450,30,SALES
7902,FORD,3500,20,RESEARCH
7934,MILLER,1800,10,ACCOUNTING
NB:-If you want .txt file just change your file format EMP_DEPT.csv to EMP_DEPT.txt.
No comments:
Post a Comment