【问题标题】:How to insert data into hive table through jdbc?如何通过jdbc向hive表中插入数据?
【发布时间】:2017-05-08 20:51:51
【问题描述】:

我尝试过使用jdbc来操作hive中的数据。当我使用 select 或 create 操作时,一切正常。但是当我尝试使用 insert 将一些行添加到表中时:

String sql = "insert into agg_test_20170508 values (20170508, 100)";
Class.forName(JDBC_Driver);
connection = DriverManager.getConnection(JDBC_String, ID, pwd);
Statement stmt = connection.createStatement();
System.out.println(D_FORMAT.format(new Date()) + " Running:\r\n" + sql);
ResultSet res = stmt.executeQuery(sql);
System.out.println(D_FORMAT.format(new Date()) + " QUERY COMPELET.");

但是过了很久,什么都没有回来。使用jdbc连接hive有什么限制吗?

我公司的hadoop版本是0.20.2。

【问题讨论】:

    标签: java jdbc hive


    【解决方案1】:

    您必须使用 executeUpdate 和 INSERT UPDATE DELETE :

    int res = stmt.executeUpdate(sql);
    

    int executeUpdate(String sql): 执行一个 INSERT、UPDATE 或 DELETE 语句,并返回一个更新帐户,指示数量 受影响的行(例如,插入 1 行,或更新 2 行,或 0 行 受影响)。

    ResultSet executeQuery(String sql): 执行一个 SELECT 语句并返回一个 ResultSet 对象,该对象包含由 查询。

    【讨论】:

      【解决方案2】:

      请使用 executeUpdate 方法而不是 executeQuery 方法

      【讨论】:

      • 它看起来像评论而不是答案。请说明理由。
      【解决方案3】:

      executeQuery() --- 这通常用于读取数据库的内容。输出将采用 ResultSet 的形式。一般使用SELECT语句。

      executeUpdate() --- 这通常用于更改数据库。一般DROP TABLE或DATABASE、INSERT into TABLE、UPDATE TABLE、DELETE from TABLE语句都会用到这里。输出将采用 int 的形式。这个 int 值表示受查询影响的行数。

      execute() --- 如果你不知道使用哪种方法来执行 SQL 语句,可以使用这种方法。这将返回一个布尔值。 TRUE 表示结果是一个 ResultSet,FALSE 表示它具有表示受查询影响的行数的 int 值。

      【讨论】:

        猜你喜欢
        • 2013-06-13
        • 1970-01-01
        • 1970-01-01
        • 2020-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-27
        相关资源
        最近更新 更多