Java准备的语句语法,用于连接配置单元服务器以描述表
正在尝试建立到配置单元的连接并描述一个表Java准备的语句语法,用于连接配置单元服务器以描述表,java,jdbc,hive,prepared-statement,describe,Java,Jdbc,Hive,Prepared Statement,Describe,正在尝试建立到配置单元的连接并描述一个表 enter code here String queryTable= "dummydb.dummy_table"; String driverName = "org.apache.hive.jdbc.HiveDriver"; try { Class.forName(driverName); } catch (ClassNotFoundException ex) {
enter code here
String queryTable= "dummydb.dummy_table";
String driverName = "org.apache.hive.jdbc.HiveDriver";
try {
Class.forName(driverName);
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
//connect hive server (no issue in that)
String hiveUrl = PropertyLoader.getInstance("staging").getDruidHive();
Connection con = DriverManager.getConnection(hiveUrl, "hadoop", "");
##Working code is below:
String sql = "describe formatted dummydb.dummy_table" ;
PreparedStatement pstmt = con.prepareStatement(sql);
ResultSet rs1 = pstmt.executeQuery();
##But I try to use this which is not working:
String queryTable="dummydb.dummy_table"
String sql1 = "describe formatted ?" ;
PreparedStatement pstmt = con.prepareStatement(sql1);
pstmt.setString(1, queryTable);
ResultSet rs1 = pstmt.executeQuery();
错误
org.apache.hive.service.cli.HiveSQLException:编译语句时出错:失败:ParseException行1:19无法识别descripe语句中“格式化的”“dummydb.dummy_表”“附近的输入。这是预期行为,无法将表名作为绑定参数传递。这不仅适用于
descripe
,而且适用于所有语句,不仅适用于表名,也适用于列名。只有值可以参数化。在这种情况下,如果希望具有动态行为或使用类似于Oracle中的DBA\u TAB\u COLUMNS
的字典表,则必须连接语句(不确定配置单元中的名称)。感谢@MarmiteBomber提供快速而好的回答。你能告诉我如何解决声纳问题吗?因为这个问题(没有参数化)。对不起@Manish,你有哪个声纳问题?