使用INSERT覆盖的HIVE JDBC BatchUpdate

时间:2018-10-10 16:11:41

标签: jdbc hive prepared-statement spring-jdbc batch-updates

我有一个带有日期分区的配置单元表 emp ,我希望每次插入时都覆盖该分区。

我正在使用JDBC batchUpdate和配置单元的插入覆盖。

问题是,每当我使用插入的每次迭代下面的格式插入多个项目时,都会覆盖先前的插入。

jdbcTemplate.batchUpdate("INSERT OVERWRITE table emp partition(datestamp = ?) values (?,?)",
            new BatchPreparedStatementSetter() {
                public void setValues(PreparedStatement ps, int i) throws SQLException {

                    ps.setString(1, date);
                    ps.setString(2, emp.get(i).getEmp_id());
                    ps.setString(3, emp.get(i).getName());
                }

                public int getBatchSize() {
                    return emp.size();
                }
            });

插入覆盖将起作用,并且如果插入语句的结构如下所示,并且所有排成一行,则我可以插入多行:

INSERT OVERWRITE table emp partition(datestamp = ?) values(?, ?),(?, ?); 

但是,我不知道使用JDBC batchUpdate实现此目的的最简单方法。欢迎任何帮助或建议。谢谢!

0 个答案:

没有答案