查找并列出脚本中访问的所有MySQL表

查找并列出脚本中访问的所有MySQL表,mysql,sql,parsing,search,find,Mysql,Sql,Parsing,Search,Find,我们正在重新构建数据库,需要找到PHP脚本中引用的所有表。我正在考虑使用SQL解析器,但我需要知道表出现在哪些特定文件中。在以下两种情况下,它都需要找到表联系人,然后列出脚本位置 SELECT * FROM contacts WHERE... SELECT * FROM `contacts` WHERE... 试试PHPStorm。它有一个叫做“数据库工具”的功能。配置后,可以使用“查找使用情况”功能跟踪项目中的所有表引用 更多信息如果没有其他方法,您可以使用蛮力方法:从information

我们正在重新构建数据库,需要找到PHP脚本中引用的所有表。我正在考虑使用SQL解析器,但我需要知道表出现在哪些特定文件中。在以下两种情况下,它都需要找到表
联系人
,然后列出脚本位置

SELECT * FROM contacts WHERE...
SELECT * FROM `contacts` WHERE...

试试PHPStorm。它有一个叫做“数据库工具”的功能。配置后,可以使用“查找使用情况”功能跟踪项目中的所有表引用


更多信息

如果没有其他方法,您可以使用蛮力方法:从information_schema数据库获取表列表,然后将该列表与bash脚本一起使用,该脚本对源树上的每个表名执行grep。如果您的表名是常用词,那么结果中可能会有一些“噪音”,但您会得到一个列表,列出所有表的所有引用以及文件名。好主意Benny。然而,更准确的东西将是理想的。当你把它和我们的表名放在一起时,我可以预见很多“噪音”。不幸的是,我想不出更好、更准确的方法。当您在源代码树上运行grep以获取所有表名时,您可以将该输出传输到一个文件中,然后想出一些其他搜索方法(可能使用文本编辑器),使您能够更轻松地筛选“噪音”。从$table中搜索
更新$table
将是一个开始,但我仍然希望查看所有行,以确保我没有遗漏一些奇怪的SQL语句。Benny Hill感谢您的跟进!我会试试这个,我希望在MySQL通用查询日志中可以设置一个参数,输出查询命中率和执行查询的页面,但是我还没有找到任何东西。另一种方法是对所有MySQL查询进行grep,然后通过SQL解析器运行查询列表,以获取所有命中的表。问题是你没有这些查询所在的脚本位置,这对我没有好处。你还需要考虑“死”代码。您可以在不再使用的文件中的某个位置进行查询。如果该查询恰好包含一个表名,而该表名在其他任何地方都没有使用,则可以在重构期间从数据库中删除该表。你遇到了一个有趣(尽管很乏味)的问题。我认为它不会出现得更多的原因是因为公司根本不关心这种维护(对他们不利)。除非他们改变数据库系统、编程平台等,否则他们不会解决这些问题。