SQL> desc emp 名前 NULL? タイプ ------------------------------- -------- ---- EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10 JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2)
CSVファイルを作成する為に以下を実行する。
SQL> set echo off SQL> set heading off SQL> set termout off SQL> set pause off SQL> set pagesize 0 SQL> set linesize 80 SQL> set feedback off SQL> spool emp.csv SQL> select empno || ',' || ename || ',' || 2 job || ',' || sal from emp; 7369,SMITH,CLERK,800 7499,ALLEN,SALESMAN,1600 7521,WARD,SALESMAN,1250 7566,JONES,MANAGER,2975 7654,MARTIN,SALESMAN,1250 7698,BLAKE,MANAGER,2850 7782,CLARK,MANAGER,2450 7788,SCOTT,ANALYST,3000 7839,KING,PRESIDENT,5000 7844,TURNER,SALESMAN,1500 7876,ADAMS,CLERK,1100 7900,JAMES,CLERK,950 7902,FORD,ANALYST,3000 7934,MILLER,CLERK,1300 SQL> spool off
以上の操作によりemp.csvという名前でCSVファイルが作成される。
WindowsのSQL*Plusの場合は、SQL*Plusの実行ファイルが格納されている ディレクトリにCSVファイルが作成される。
オプションやSQLを変更して、作成するCSVファイルを変更する方法を以下に説明する。
- 各項目をダブルクォートで括りたい場合
SQL文を以下のように変更する。
SQL> select '"' || empno || '","' || ename || '","' ||
2 job || '","' || sal || '"' from emp;
上記のSQL文により作成されるデータは、以下のようになる。
"7369","SMITH","CLERK","800" "7499","ALLEN","SALESMAN","1600" "7521","WARD","SALESMAN","1250" "7566","JONES","MANAGER","2975" "7654","MARTIN","SALESMAN","1250" "7698","BLAKE","MANAGER","2850" "7782","CLARK","MANAGER","2450" "7788","SCOTT","ANALYST","3000" "7839","KING","PRESIDENT","5000" "7844","TURNER","SALESMAN","1500" "7876","ADAMS","CLERK","1100" "7900","JAMES","CLERK","950" "7902","FORD","ANALYST","3000" "7934","MILLER","CLERK","1300"
- 各レコードの改行位置を変更する場合
以下のパラメータを変更する。
set linesize 100
改行位置を100バイト目にする。
- 作成するCSVファイル名を変更する場合
以下のパラメータを変更する。
spool emp.csv
- CSVファイル名の先頭行に列見出しを入れる場合
以下のパラメータを変更する。
set heading on