我继承了类似bugzilla的页面,允许用户查看错误列表。我想扩展它,以便可以回答并关闭它们。
问题是我对数据库结构了解不多。我所拥有的只是连接细节和一些示例sql查询,它提供了关于几个表的良好提示。我怎样才能找到数据库类型(甚至不知道)并获取有关它们的表格列表和详细信息?
答案 0 :(得分:2)
您需要调查数据库引擎的数据字典(如果有)。这一切都取决于它是什么类型的数据库。要调查一下,请继续阅读!
对于Oracle来说,有一大堆 构成数据字典的表。 尝试运行:
SELECT * FROM SYS.ALL_TABLES; - 弄清楚表格
SELECT * FROM SYS.ALL_TAB_COLUMNS WHERE owner ='schema'和table_name ='table_name_found_above';
对于SQLite,尝试运行(虽然我怀疑bugzilla正在运行):
SELECT * FROM sqlite_master; - 这应列出CREATE语句中的所有列名
在MySQL,PostgreSQL,SQL Server尝试运行:
SELECT * FROM INFORMATION_SCHEMA.tables;
来自INFORMATION_SCHEMA.columns的SELECT * WHERE table_schema ='schema'和table_name ='table';
在DB2中,尝试:
SELECT * FROM SYSCAT.tables;
SELECT * FROM SYSCAT.columns其中tabname ='table'和tabschema ='schema';
如果您不知道它正在运行什么数据库引擎,只需尝试在查询工具中运行一堆表查询,直到它们开始返回有效结果;它会帮助你缩小你运行的db引擎的范围。然后,您可以将表名替换为列查询。
上述选项可以帮助您减少它。从那里,您可以提取数据库引擎的文档并了解有关它的功能的更多信息。或者,或者我会与运行您现在拥有的bug跟踪器的服务器管理员交谈,看看他/她是否可以挖掘更多信息。
答案 1 :(得分:1)
我假设你有一个使用这个数据库的工作应用程序。如果它通过ODBC连接,您可以(至少在Windows中)打开ODBC日志记录。他们痛苦地手动解析,但这可能是另外一个信息来源。
一旦你知道你正在查看什么类型的数据库,启动你选择的查询工具,并开始挖掘。