获取数据库元数据PHP/PDO


Get Database metadata PHP/PDO

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

我正在寻找类似于Java JDBC DatabaseMetadata接口。

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

到目前为止,我发现的是information_schema,这是ANSI/ISO SQL:2003标准和存储这些元数据,但我不确定所有的rdbms遵守它,通常一个SQL免费的解决方案(如JAVA DatabaseMetadata)将是可取的。

我不确定它们是否相等,但对于mssql,你也有一个information_schema,我不知道其他DBMS是否也有相同的schema

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 (jdbc使用desc而不是DESCRIBE)

所以我猜没有单一/一致的方式来检索多个DBMS的数据库结构,也许你可以提取的结构不是从数据库,但从你的模型在你的应用程序?

这似乎是一个相当严重的事情从PHP PDO缺乏…getColumnMeta仍然是"实验性的"。

只是一个想法:它很难优雅,但它可能是在极端情况下考虑的,当你真的真的想要或需要尽可能多的数据库或列元数据时:使用PHP exec()来运行(对于MySQL):

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

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