有没有办法使用PHP的PDO获取数据库元数据。
我正在寻找类似于Java JDBC DatabaseMetadata Interface的东西。
我感兴趣的是检索给定表的外键列表,但我不希望该解决方案绑定到任何特定的DBMS。
我到目前为止发现的是information_schema,它是ANSI / ISO SQL:2003 standrad并存储这些元数据,但我不确定所有RDBMS是否符合它,并且通常一个SQL免费解决方案(如JAVA DatabaseMetadata)更可取。
感谢您提供任何意见,
答案 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找到类似的命令......