如何在使用JDBC执行DROP语句时检查或验证其结果?

时间:2019-07-08 08:07:07

标签: mysql scala hive

我正在尝试从配置单元表中删除分区。 为此,我想出了以下代码。

try {
            // make the connection
            Class.forName(driver)
            connection = DriverManager.getConnection(url, username, password)
        } catch {
            case cnf:ClassNotFoundException =>
                println("Invalid driver used. Class not found")
                cnf.printStackTrace()
            case e:Exception => e.printStackTrace
        }
        connection.close()
    }

    def dne(connection: Connection): Unit = {

        try {
            // Drop & Exchange the partition
            val statement = connection.createStatement()
            val drop      = statement.executeUpdate(s"alter table db.tablename drop partition(continent='ASIA')")
        } catch {
            case se: SQLException => println("SQL exception. Exchange partition failed")
                se.printStackTrace()
            case e: Exception => e.printStackTrace()
        }
    }

我试图检查SQL drop语句产生的值,并基于该值,将成功删除和失败的分区名称存储在两个单独的集合中。 如果它是“ select”语句,我知道我们可以使用结果集来确定它是否为空。 我无法理解如何检查Drop语句的结果 在这种情况下我该怎么办?

1 个答案:

答案 0 :(得分:0)

发出命令后,您可以检查要删除的分区是否仍然存在:

SELECT * FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_SCHEMA = 'your_schema' AND TABLE_NAME ='your_table' 
AND PARTITION_NAME ='your_partition';

请参阅用户手册以获取更多信息:
https://dev.mysql.com/doc/refman/5.7/en/partitions-table.html