当前位置: 首页 > 面试题库 >

使用Java代码列出特定PostgreSQL数据库中的所有表

殳毅
2023-03-14
问题内容

实际上我已经用谷歌搜索了一下,我需要对应的SELECT命令来跟随下面的PostgreSQL shell命令:

\dt schemaname.*

我设法用以下代码获取所有数据库:

            Statement statement = (Statement) connection.createStatement();
            ResultSet rs = statement
                    .executeQuery("SELECT datname FROM pg_database");
            while (rs.next()) {
                System.out.println("DB Name : " + rs.getString(1));
           //i need another while here to list tables 
           //inside the selected database
}

我尝试了以下声明,但没有运气:

statement.executeQuery("SELECT table_schema,table_name FROM "
                                + rs.getString(1)
                                + " ORDER BY table_schema,table_name");

这是我得到的错误:

org.postgresql.util.PSQLException: ERROR: relation "template1" does not exist
  Position: 37
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:500)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:374)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254)
    at com.isiran.rayten.rg.db.bare.wrapper.PGWrap.main(PGWrap.java:64)

问题答案:

要列出数据库中的所有表,您必须读取表,pg_catalog.pg_tables 但是不幸的是,您必须登录数据库。所以在你写评论的地方

//i need another while here to list tables 
//inside the selected database

在循环表之前,您需要登录该数据库。



 类似资料:
  • 问题内容: 我环顾四周,仍然找不到如何列出数据库中的所有表。MySQLi有可能吗? 谢谢。 问题答案: 有很多方法。 是执行此操作的最简单的SQL语句。您还可以查看是否需要更多详细信息或进行过滤等操作。

  • 问题内容: 是否有一条SQL命令将列出数据库中的所有表,并且该命令与提供程序无关(可在MSSQLServer,Oracle,MySQL上运行)? 问题答案: 最接近的选项是查询表。 它是标准SQL的一部分,但并非所有供应商都支持它。据我所知,唯一支持它的RDBMS供应商是: 的MySQL PostgreSQL的 微软SQL服务器2000年/ 2005年/ 2008年 一些品牌的数据库,例如Orac

  • 问题内容: 有没有一种方法可以获取实例中所有数据库中所有存储过程中引用的所有列和表?输出应为: 问题答案: 这将得到您想要的列表,但是,如果您在动态SQL中嵌入了此类列引用(并且可能找不到依赖于延迟名称解析的引用),则将无济于事。SQL Server不会解析存储过程的文本以提供DMV输出。 现在尝试使用子句来处理在同一服务器上具有不同归类的数据库的情况。 如果您的数据库处于80兼容模式,那么该语法

  • 问题内容: 我运行了此命令以访问我的Redis服务器。 现在,我想显示所有数据库。 请告诉我这个命令。 谢谢。 问题答案: 没有命令可以执行此操作(例如您可以使用MySQL进行操作)。Redis数据库的数量是固定的,并在配置文件中设置。默认情况下,您有16个数据库。每个数据库都用数字(而不是名称)标识。 您可以使用以下命令来了解数据库的数量: 您可以使用以下命令列出定义了某些键的数据库: 请注意,

  • 问题内容: 在PostgreSQL的information_schema中列出所有表的最佳方法是什么? 需要说明的是:我正在使用一个空的数据库(我没有添加任何自己的表),但是我想查看information_schema结构中的每个表。 问题答案: 您应该能够运行以获取由Postgres管理的特定数据库的每个表的列表。 您还可以添加一个以仅查看信息模式中的表。

  • 我需要在Active Directory中找到特定组中的所有用户。我可以查询AD的特定组,我想得到用户,但我无法查询用户的特定组。 以下工作: 上面的查询返回所有类似“test”的广告组。但我该如何从广告群中获取用户列表呢?我特别想列出像“test”这样的所有组中的用户。