我的问题涉及识别执行mysql命令的表和模式。我是从PHP中的PDO包装器运行它
例如:
USE db1;
SELECT * FROM `table`;
我可以使用DESCRIBE SELECT * FROM table
获取表的名称,并假设模式的名称是db1。
现在,当我想做这样的事情时
USE db1;
SELECT * FROM `db2`.`table`
我可以再次使用describe命令获取表的名称。但是,我无法在MySQL中找到一个方法,它为我提供了执行命令的模式。
有没有办法使用regex从MySQL命令中提取数据库和表名。假设没有连接,命令只是一个SELECT
答案 0 :(得分:0)
使用查询分析器生成的查询应该为您提供您想要的内容。要明确这是数据库测试中的表测试。
explain extended select * from test;
+----+-------------+-------+------+---------------+------+---------+------+------+----------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+------+---------------+------+---------+------+------+----------+-------+
| 1 | SIMPLE | test | ALL | NULL | NULL | NULL | NULL | 5 | 100.00 | |
+----+-------------+-------+------+---------------+------+---------+------+------+--------- -+-------+
1 row in set, 1 warning (0.00 sec)
别忘了做节目警告
show warnings;
+-------+------+--------------------------------------------------------------------------------------------------------------------------------------+
| Level | Code | Message |
+-------+------+--------------------------------------------------------------------------------------------------------------------------------------+
| Note | 1003 | select `test`.`test`.`id` AS `id`,`test`.`test`.`name` AS `name`,`test`.`test`.`date_modified` AS `date_modified` from `test`.`test` |
+-------+------+--------------------------------------------------------------------------- -----------------------------------------------------------+
1 row in set (0.00 sec)