gpt4 book ai didi

java - 具有 Progress MongoDB JDBC 驱动程序的 ROW_NUMBER 函数

转载 作者:行者123 更新时间:2023-12-02 03:14:11 34 4
gpt4 key购买 nike

当我使用 Progress DataDirect MongoDB JDBC 驱动程序在 Java 程序中运行以下查询并在数据库中有一个大表(4000 万条记录)时遇到内存问题:

String query = "SELECT * FROM (SELECT tablename.*, ROW_NUMBER() OVER() AS rowid FROM tablename)";

如果数据库中有一个小表,上面的查询工作得很好。

如果我只是运行“SELECT ROW_NUMBER() OVER() AS rowid FROM tablename”,那么该列的名称将变为空。语句中的AS好像没有作用:

Column Name: null class java.lang.Integer

Exception in thread "main" java.lang.NullPointerException

如果我只运行“SELECT * FROM tablename”,取回 ResultSet 对象的速度非常快,我可以在不到几分钟的时间内轻松读取 4000 万条记录。

那我错过了什么?我不知道如何正确使用 ROW_NUMBER 函数。任何想法?谢谢。

最佳答案

在您的查询中,row_number() 没有列名,它只有一个标签(as 子句)。

幸运的是,JDBC 规范(第 15.2.3 节)要求您按标签而不是按名称检索列。 JDBC 中的列标签可以是 as 子句的值(如果已指定),或者是原始列名称。

您可以使用ResultSetMetaData.getColumnLabel()获取列标签。

关于java - 具有 Progress MongoDB JDBC 驱动程序的 ROW_NUMBER 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40556485/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com