SQL*Plusの色々な技

sqlplusの内容をファイルに出力する
   sqlplusを使用して、「SELECT」等のSQL文を使用しているときに、その結果をファイルへ出力する方法を紹介します。
sqlplus内で以下のようにSQLPLUSコマンドを使用することにより、ファイルへ出力することができます。

SQL> spool /tmp/hogehoge
SQL> select * from emp;
      ・
      ・
SQL> spool off

上記のように「spool」コマンドを使用することによりファイルへ出力することができます。
上の例では「/tmp/hogehoge」というファイルを作成しており、実際には「/tmp/hogehoge.lst」というファイルができます。そこに「select * from emp」の結果を書き込んでいます。
一度「spool」コマンドでファイル出力をさせると「spool off」とファイル出力をやめる指示を与えない限りずっと書き込むのでご注意を。(sqlplusから抜けるとそこまでです)
またこのコマンドは出力された内容を全てファイルに書き出します。したがって、sqlplus環境変数コマンドを使用して出力内容を操作することをお奨めいたします。(このあたりは下記のCSV形式のファイル出力をごらん下さい。)

sqlplusでSELECT文の結果をファイルにCSV形式で出力する

   SELECT文の結果内容をCSV形式でファイルへ出力する方法を紹介します。

SQL> set linesize 1000
SQL> set pagesize 0
SQL> set trimspool on
SQL> set colsep ','
SQL> spool /tmp/hogehoge
SQL> select * from emp;
      ・
      ・
SQL> spool off

上記の「set」コマンドを説明します。
・1行目の「linesize」:1行の長さを指定します。少し大きめの数字を取っておきましょう。
・2行目の「pagesize」:数レコードずつの間のセパレータを無効にする。
・3行目の「trimspool」:SPOOLファイルの行末のスペースを無効にする。
・4行目の「colsep」:セパレータの設定。ここでは「,」とする。

多少、スペースが入り込んだりとする部分はありますが、とりあえずこれでCSV形式でデータをファイルにすることができます。

INSERT文の時に「&」という文字を入れたい

   INSERT文を使用時にVALUES内に「&」という文字は通常入りません。それは、Sqlplus内で「&」という文字は、置換変数として認識されるためです。
しかし文字として入れたい場合には以下のように行いましょう。

SQL> set define off
SQL> insert into emp values('**',・・,'aa&bb');


Oracle TOPページへ戻る