スポンサーリンク

[Oracle] 1000万件SELECTしてファイル出力する速度

概要

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結果が出力されていました。