Closed LuVx21 closed 5 years ago
String sql = "select * from " + odpsTableName + " where pt_dt = '" + formatter.format(yesterday.getTime()) + "';"; i = SQLTask.run(odps, sql); i.waitForSuccess(); List<Record> records = SQLTask.getResult(i); for (Record r : records) { com.aliyun.odps.Column[] columns = r.getColumns(); for (int j = 0; j < columns.length; j++) { System.out.println(column.getName() + ":" + column.getTypeInfo().getTypeName()); } }
执行结果如下:
weight:STRING updated_by:STRING update_time:STRING
为什么这样获取到的columns 中的字段类型全部为String, 是特意这样设计还是bug? 而下面的这种是和实际相同的
String type = odps.tables().get("user").getSchema().getColumn("update_time").getTypeInfo().getTypeName(); System.out.println(type);
这个执行结果就是DATETIME
DATETIME
SQLTask.getResult 这是个比较古老的接口了,主要用于屛显,无 schema(所以你看到的 string 是 sdk 层面统一填进去的)
SQLTask.getResult
需要准确 schema 可以用较新的 SQLTask.getResultSet
SQLTask.getResultSet
谢谢解答!
执行结果如下:
为什么这样获取到的columns 中的字段类型全部为String, 是特意这样设计还是bug? 而下面的这种是和实际相同的
这个执行结果就是
DATETIME