OracleからテキストTAB、CSVデータでエクスポートする-2
- 2007.12.11
- Oracle
TSV、CSVで、エクスポートするためのSQL文を簡単に作る方法。
3列くらいの書き出しなら手書きが早い。
しかし、50列もあるような場合は、以下の方法でSQL文を組み立てる。
■最終的に作りたいSQLを確認する
emp_export_tab.sql
set echo off set heading off set termout off set pause off set pagesize 0 set linesize 1000 set trimspool on set feedback off spool ファイル名.txt SELECT id || ' ' || last_name || ' ' || first_name || ' ' || address FROM emp; spool off ;
このようにid, last_name, first_name, addressくらいだと手入力が早いけど、何十個も列(フィールド)があったら大変。
■テーブルの列名を取得する
書き出すテーブル名が EMP の場合、
SQL> SELECT column_name 2 FROM all_tab_columns 3 WHERE UPPER(TABLE_NAME) = 'EMP' ;
‘emp’ではなく、’EMP’と入力すること。
■テキストエディタで加工する
ID LAST_NAME FIRST_NAME ADDRESS
このように出力された列名をコピーペーストでテキストエディタへ持っていく。
置換えコマンド等で、一括変換する。
viの場合、先頭(1)から最終行($)までを対象に、
各業のお尻($)を || ‘タブ’ || に置換える方法は以下のコマンドで実行。
: 1,$ s/$/ || ' ' ||/g
すると、この通り。
ID || ' ' || LAST_NAME || ' ' || FIRST_NAME || ' ' || ADDRESS || ' ' ||
■さらに整形して完成
頭とお尻に情報を加えて完成。最後のフィールドのADDRESSには「TAB」が必要ないので消すのを忘れずに。
set echo off set heading off set termout off set pause off set pagesize 0 set linesize 1000 set trimspool on set feedback off spool ファイル名.txt SELECT ID || ' ' || LAST_NAME || ' ' || FIRST_NAME || ' ' || ADDRESS FROM emp; spool off ;
-
前の記事
Apple Pages Tips メモ 2007.12.04
-
次の記事
Ultraseek5.3をUltraseek5.7へアップグレード 2007.12.13