oracle SQL*Plus出力csv

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 || '","' ||
    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

你可能感兴趣的:(Oracle)