作为标题,我想通过springNamedParameterJbbcTemplate将数据批量插入到配置单元表中,它可以如下工作:
SqlParameterSource[] batchParameterSources = SqlParameterSourceUtils.createBatch(batchValues);
template.batchUpdate("insert into table(a, b, c) values(:a, :b, :c)", batchParameterSources);
但是,上面的sql无法分配分区,请使用sql
"insert overwrite table partition(date = '2020-04-02') values (:a, :b, :c)"
spring将抛出SQLFeatureNotSupportException:不支持方法。
那个么,如何使用spring-jdbc模板将数据批量插入到具有特殊分区的配置单元表中呢?
期待您的回答,非常感谢!
我研究了Spring教程,没有发现关于使用特殊分区批量插入到hive表的信息。
所以我使用本机蜂箱驱动程序。
您可以按如下方式编码:
try {
Class.forName("org.apache.hive.jdbc.HiveDriver");
Connection connection = DriverManager.getConnection("hiveserver", "username", "password");
Statement statement = connection.createStatement();
boolean result = statement.execute("insert overwrite table table_name partition(dt = 'date') values (valueA), (valueB), (valueC)");
if (!result) {
log.info("write data successfully");
}
}
注:
- 如果存储一些数据,statement.execute((的方法将返回false。因为存储不会返回任何结果
- 如果你的数据太多,最好存储批量,比如
insert overwrite table_name partition(dt='date') values (valueA), (valueB)...
insert into table_name partition(dt='date') values (valueC), (valueD)...