获取数据库元数据PHP / PDO

时间:2014-06-05 12:30:55

标签: php sql pdo database-metadata

有没有办法使用PHP的PDO获取数据库元数据。

我正在寻找类似于Java JDBC DatabaseMetadata Interface的东西。

我感兴趣的是检索给定表的外键列表,但我不希望该解决方案绑定到任何特定的DBMS。

我到目前为止发现的是information_schema,它是ANSI / ISO SQL:2003 standrad并存储这些元数据,但我不确定所有RDBMS是否符合它,并且通常一个SQL免费解决方案(如JAVA DatabaseMetadata)更可取。

感谢您提供任何意见,

2 个答案:

答案 0 :(得分:0)

我不确定它们是否相同,但对于mssql,您还有一个information_schema,我也不知道其他DBMS是否也有相同的架构

http://msdn.microsoft.com/en-us/library/aa933204%28SQL.80%29.aspx

您还可以使用这些来提供有关数据库结构的信息

http://dev.mysql.com/doc/refman/5.0/en/explain.html

http://dev.mysql.com/doc/refman/5.0/en/show-index.html

但这对所有其他DBMS都不起作用(JDBS使用desc而不是DESCRIBE)

所以我想没有一种/一致的方法可以检索多个DBMS的数据库结构,也许你可以不是从数据库中提取结构,而是从应用程序中的模型中提取结构?

答案 1 :(得分:0)

这似乎是缺乏PHP PDO的一个严重的事情...而且getColumnMeta仍然是“实验性的”。

只是一个想法:它不是很优雅,但它可能是极端想到的东西,你真正想要或需要尽可能多的dbase或列元数据:使用PHP exec()来运行(对于MySQL的):

mysqldump -d -h localhost -u username -ppwd databasename > dumpfile.sql

然后检查dumpfile.sql。显然你必须为其他DBMS找到类似的命令......