概要
ORACLEのテーブルのレコードを、1000万件SELECTして、その内容をファイル出力しました。
プログラム
テーブル構成
テーブル構成やデータは、以下の通りに入れたものを使います。
SQL
SQLは以下のとおりで、1カラムのみ取得して出力します。
そのほかのオプションはコメントで説明。
-- コマンド非表示 set echo off -- 1行の最大サイズ指定 set linesize 512 -- 0を指定すると、ヘッダー行など余計なものが非表示になる set pagesize 0 -- 右トリムする set trimspool on -- 出力件数非表示 set feedback off -- 複数カラムの場合の区切り文字 set colsep ‘,’ -- ファイル出力先 spool ./output/result.txt select name from employee; spool off exit;
バッチ
バッチで、以下のように作成して実行しています。
標準出力をすると速度がでないので、非表示にしています。
@echo off echo 開始時刻:%date% %time% sqlplus ユーザー名/パスワード@接続文字列 @上記sqlファイル > nul echo 終了時刻:%date% %time% pause
実行結果
実行結果は大体10分くらいでした。
カラム数が増えていくほど、この処理時間は伸びるでしょう。
開始時刻:2021/11/21 14:01:25.16 終了時刻:2021/11/21 14:10:15.66 続行するには何かキーを押してください . . .
ちゃんと1000万行のselect結果が出力されていました。