Oracle Loader for Hadoopを試していたら外部テーブル(external table)という仕組みがあるのを知ったので、ちょっと調べてみた。
外部テーブルとは、データファイル(CSVやDataPump)をテーブルとして扱うことが出来るもの。(逆説的に、まるでHiveみたいだなw)
外部テーブルを作るのは一瞬だが、その後SELECTする際にデータファイル読み込みが発生するので、実行時間はSQL*Loaderとそんなに差が無いかもなぁ…と思っていたが、インデックスの無いEMPテーブルへのロードを試してみたら、外部テーブルを使う方が3~4倍も速かった。
CSVファイルとDataPumpの外部テーブルによるSELECT-INSERTは、100万件だとDataPumpの方が2倍くらい速かったが、1000万件だと逆にCSVの方が2倍くらい速かった^^;
この辺りは、使っているデータ型の種類やデータ値によって色々変わってきそうな気がする。(要するに、実際に使うテーブルやデータで計測せよ、と)