代码之家  ›  专栏  ›  技术社区  ›  ya23 devoured elysium

查找有关数据库的详细信息

  •  0
  • ya23 devoured elysium  · 技术社区  · 15 年前

    我继承了一个类似bugzilla的页面,允许用户查看bug列表。我想扩展它,以便能够回答和关闭它们。

    问题是我对数据库结构知之甚少。我所拥有的只是连接详细信息和一些示例sql查询,这为一些表提供了很好的提示。我如何才能找到数据库类型(甚至不知道),并获得表列表和有关它们的详细信息?

    2 回复  |  直到 15 年前
        1
  •  2
  •   J. Polfer    15 年前

    您需要调查数据库引擎的 数据字典 ,如果有。这完全取决于它是什么样的数据库。要调查一下,请继续阅读!

    • 对于甲骨文来说,有大量的 构成数据字典的表。

      从SYS.ALL_表中选择*计算表格

      从SYS.ALL_TAB_列中选择*,其中所有者='schema'和表名称='table_name_found_over';

    • 对于SQLite,请尝试运行(尽管我怀疑bugzilla是否正在运行):

      从sqlite_master中选择*这将列出CREATE语句中的所有列名

    • 在MySQL、PostgreSQL、SQL Server中尝试运行:

      从信息_SCHEMA.tables中选择*;

    • 在DB2中,尝试:

      从SYSCAT.tables中选择*;

      从SYSCAT.columns中选择*,其中tabname='table'和tabschema='schema';

    若您不知道它运行在哪个数据库引擎上,只需尝试在查询工具中运行一组表查询,直到它们开始返回有效结果;它将帮助您缩小正在运行的db引擎的范围。然后,可以用中的表名替换列查询。

    上面的选项应该可以帮助你缩小它。从那里,您可以调出数据库引擎的文档,了解更多关于它的特性。要么这样,要么我就去和运行你现在拥有的bug追踪器的服务器管理员谈谈,看看他/她是否能找到更多信息。

        2
  •  1
  •   Adrien    15 年前

    我假设你有一个使用这个数据库的工作应用程序。如果它通过ODBC连接,您可以(至少在Windows中)打开ODBC日志记录。手动解析它们很痛苦,但这可能是一个额外的信息源。

    一旦你知道你在看什么类型的数据库,启动你选择的查询工具,开始四处挖掘。