执行大容量导入¶
神通JDBC驱动提供了ImportHandler对象用于发送INSERT BULK语句执行大容量数据导入。大容量导入提供了一种自定义的一种数据导入方式,提高了数据导入的性能,并给第三方开发提供了一套通用的API。
创建ImportHandler¶
建立了到神通KSTORE的连接之后,就可以使用该连接发送INSERT BULK语句。ImportHandler对象通过Connection接口的方法createImportHandler创建,例如:
handler = ((BaseConnection) con).createImportHandler("TEMP");
在创建ImportHandler对象的时候,可以通过参数来指定导入属性。
使用ImportHandler执行普通大容量导入¶
ImportHandler接口提供了一套通用的接口。 ImportHandler对象执行导入的语句是INSERT BULK语句, 语法如下:
insert_bulk ::=
hint ::=
执行普通导入时,ImportHandler对象先设置属性,然后绑定列数据,最后execute()执行导入。
@Test
public void testImportHandler() {
ImportHandler handler = null;
try {
stmt = con.createStatement();
// 导入数据
handler = ((BaseConnection) con).createImportHandler("TEMP");
handler.setNullDataProcessMode(ImportHandler.NULL_DATA_PROCESS_MODE_NULL);
handler.setInt(1, 1);
handler.setString(2, "shentong");
handler.endRow();
handler.execute();
long count = handler.getUpdateCount();
assertEquals(1, count);
stmt.close();
handler.close();
} catch (SQLException e) {
fail(e.getMessage());
}
}
关闭ImportHandler对象¶
尽管当Connection关闭时,会将由它创建的ImportHandlert对象关闭,但是作为一种好的编程风格,对于不再使用的ImportHandler对象应显式地关闭它们,这可以使ImportHandler对象使用的外部资源立即被释放。当一个对象不需要时,应该尽早地释放他们。