TERADATAのJDBCドライバにはFASTLOADモードが用意されています。
TERADATA12頃から、JDBCでFASTLOADモードが追加されました。
crmprogrammer38.hatenablog.com
前回TERADATAにJDBCを使ってデータをいれるときは、addBatchを使ってまとめて登録した方が早いということを書きましたが、FASTLOADモードはさらに高速でデータをロードできます。
FASTLOADモードのポイントとしては、
・JDBCのURLパラメータにTYPE=FASTLOADを指定する
・通常のFASTLOADと同様にエラーテーブル2つが作成される
・通常のFASTLOADと同様に空テーブルのみロード可能
・JDBCのsetAutoCommitはfalseにする。
・commitするのは最後の1回、途中でのcommitはしない
・使える文字コードは限定されている(V13では、KANJISJIS_0SとUTF-8がサポートされているので特に問題はないと思います)
サンプルとしては次の通りです。
//接続先を用意 String url = "jdbc:teradata://sampleip/CHARSET=UTF8,DATABASE=sampledb,TMODE=ANSI,TYPE=FASTLOAD"; Driver driver = (Driver)Class.forName("com.ncr.teradata.TeraDriver").newInstance(); Properties loginInfo = new Properties(); loginInfo.setProperty("user", "sampleusername"); loginInfo.setProperty("password", "samplepassword"); connection = driver.connect(url,loginInfo); connection.setAutoCommit(false); PreparedStatement insertStatement = connection.prepareStatement("insert into sampletable (col1,col2,col3) values (?,?,?)"); for(int i=0; i< 10000; i++){ insertStatement.setString("col1" + i); insertStatement.setString("col2" + i); insertStatement.setString("col3" + i); insertStatement.addBatch(); } insertStatement.executeBatch(); connectionInsert.commit();