我正在尝试使用JDBC驱动程序为JAVA运行tigerGraph的选择语句,但获得JAVA .sql. sqlexception:不支持的dbtable:感染案例错误。是否使用JDBC支持tigerGraph的select语句,或者是否有其他方式来执行select语句。
try (Connection con = getConnection()) {
String query = "select * From InfectionCase where id == "Hansarang Convalescent Hospital"";
System.out.println("Running :" + query);
Statement statement = con.createStatement();
ResultSet rs = statement.executeQuery(query);
System.out.println(rs.toString());
do {
java.sql.ResultSetMetaData metaData = rs.getMetaData();
System.out.println("Table: " + metaData.getCatalogName(1));
System.out.print(metaData.getColumnName(1));
for (int i = 2; i <= metaData.getColumnCount(); ++i) {
System.out.print("t" + metaData.getColumnName(i));
}
java.sql.SQLException: Unsupported dbtable: InfectionCase
at com.tigergraph.jdbc.restpp.driver.QueryParser.<init>(QueryParser.java:629)
at com.tigergraph.jdbc.restpp.RestppStatement.execute(RestppStatement.java:41)
at com.tigergraph.jdbc.restpp.RestppStatement.executeQuery(RestppStatement.java:35)
at com.prissoft.connection.GraphJSON.selectStatementUsingSQL(GraphJSON.java:145)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
要从TigerGraph中获取顶点实例,您需要使用不同的语法,因为JDBC驱动程序不支持SELECT
语句:
try (Connection con = getConnection()) {
String query = "get vertex(InfectionCase, "Hansarang Convalescent Hospital")";
<more statements>
}
您可以使用get vertex(vertex_type)
语法通过主ID获得单个顶点或获得一组顶点(可选过滤,排序和限制)。请参阅相关文档
我个人认为通过REST API访问TigerGraph比使用JDBC驱动程序更好。JDBC是为关系数据库设计的,因此它需要表格数据。图表不是表格,它是一个数据网络。因此,通常从TigerGraph语句或查询执行中得到的是一个描述子图的JSON文档:顶点和边。该输出可以被平铺成行和列,但随后您会得到图形的较小图像:3D(或更确切地说:多维)数据集的2D投影。
另一个注意事项:通过JDBC调用(如上所述)或通过内置REST端点(如http://localhost:9000/graph/MyGrah/vertices/InfectionCase/Hansarang+Convalescent+Hospital
)获取单个顶点和边,甚至是这些顶点和边的集合并不是最有效的使用TigerGraph。当然,有时你只需要在应用程序中列出一组顶点或可视化图表。真正的力量来自于开发查询,即TigerGraph的"存储过程"。它可以以并行的方式在图中非常快速地执行非常复杂和复杂的图算法,如PageRank或Louvain社区检测。