az @Wiki

SQL*Plus

最終更新:

az

- view
管理者のみ編集可

SQL*Plusコマンド

  • ファイルに記述されたSQLを実行する
SQL> @test.sql
SQL> start test.sql
  • SQLバッファ内をホストOSのエディタで編集する
SQL> ed[it]
  • SQLバッファ内のカレント行の終わりに文字列を追加する
SQL> a[ppend]
  • SQLバッファ内のSQLコマンドを実行する
SQL> /
  • 現在のSQLバッファを表示する
SQL> l[ist]
  • 現在のSQLバッファ内をホストOSのファイルとして保存する
SQL> sav[e] ファイル名
  • 現在のSQL*Plus環境をホストOSのファイルとして保存する
SQL> store set ファイル名
  • 問い合わせ結果をファイルに出力する
SQL> show spool
spool OFF
SQL> spool on
SQL> spool c:\test.txt
SQL> spool off

  • SQL*Plus でテーブル名を指定してcsv出力(OTN Japan > Code Tips# 764)
$ sqlplus scott/tiger
SQL> @mk_csv.sql
SQL> Enter value for max_line_size:32767 
SQL> DATETIME FORMAT:YYYY-MM-DD HH24:MI:SS
SQL> TABLE NAME:user_tables
SQL> OUTPUT FILE NAME:user_tables.csv

----- mk_csv.sql ここから
set pagesize 0
set linesize 32767
set linesize &MAX_LINE_SIZE
set trimspool on
set feedback off
set verify off
ACCEPT DT_FMT CHAR PROMPT 'DATETIME FORMAT:'
ALTER SESSION  SET NLS_DATE_FORMAT = '&DT_FMT';

ACCEPT TABLE CHAR PROMPT 'TABLE NAME:'
ACCEPT FILE CHAR PROMPT 'OUTPUT FILE NAME:'

set termout off
spool tmp_csv.sql

SELECT 'SELECT ' FROM DUAL;
SELECT CHR(9)
    || DECODE( DATA_TYPE, 'VARCHAR2', '''"'' || REPLACE( '
                         , 'CHAR'    , '''"'' || REPLACE( '
                                     , NULL )
    || COLUMN_NAME
    || DECODE( DATA_TYPE, 'VARCHAR2', ', ''"'', ''""'' ) || ''",'' ||'
                        , 'CHAR'    , ', ''"'', ''""'' ) || ''",'' ||'
                                    , ' || '','' ||' )
 FROM USER_TAB_COLUMNS
 WHERE TABLE_NAME = UPPER( '&TABLE' )
   AND COLUMN_ID != ( SELECT MAX( COLUMN_ID ) FROM USER_TAB_COLUMNS
                        WHERE TABLE_NAME = UPPER( '&TABLE' ) )
 ORDER BY COLUMN_ID;
SELECT CHR(9)
    || DECODE( DATA_TYPE, 'VARCHAR2', '''"'' || REPLACE( '
                        , 'CHAR'    , '''"'' || REPLACE( '
                                    , NULL )
    || COLUMN_NAME
    || DECODE( DATA_TYPE, 'VARCHAR2', ', ''"'', ''""'' ) || ''"'''
                        , 'CHAR'    , ', ''"'', ''""'' ) || ''"'''
                                    , NULL )
 FROM USER_TAB_COLUMNS
 WHERE TABLE_NAME = UPPER( '&TABLE' )
   AND COLUMN_ID = ( SELECT MAX( COLUMN_ID ) FROM USER_TAB_COLUMNS
                        WHERE TABLE_NAME = UPPER( '&TABLE' ) );
SELECT ' FROM &TABLE;' FROM DUAL;

spool off

spool &FILE
@tmp_csv
spool off
set termout on
----- mk_csv.sql ここまで
人気記事ランキング
目安箱バナー