有没有办法查看由PHPMyAdmin在数据库上运行的导出查询?

时间:2020-03-08 00:48:40

标签: mysql phpmyadmin

我面临着比较多个数据库的结构的问题-但不是整体的数据库,只是它们都具有相同表的表。我可以通过界面导出其结构,但每次必须单击表列表以定义要导出的内容。有没有一种方法可以访问PHPMyAdmin运行的导出查询,以便每次都简单地复制粘贴?

2 个答案:

答案 0 :(得分:2)

phpMyAdmin 4.5.0+支持导出模板。在导出屏幕上,可以使用所需设置创建导出模板。它们是每台服务器,但是我们可以为此做些事情。

默认情况下(可以在PMA的配置文件中配置),PMA将这些导出模板存储在数据库phpmyadmin和表pma__export_templates中。

只要您拥有对服务器上所有数据库(包括phpmyadmin数据库)的完全访问权限,就可以这样做:

  • 使用其中一台服务器上所需的设置创建导出模板。
  • phpmyadmin.pma__export_templates表中
  • 导出导出模板本身
  • 将模板导入下一台服务器上的phpmyadmin.pma__export_templates
  • 转到那里的导出屏幕并加载模板。

答案 1 :(得分:0)

如果只想导出元数据,则可以使用mysqldump --no-data

前几天,我为公司的一名开发人员做这件事,他很困惑他们数据库的暂存实例与生产实例有所不同。

我跑了

mysqldump --no-data --skip-add-drop-table --skip-add-locks -h $staging_host > staging-dump.sql
mysqldump --no-data --skip-add-drop-table --skip-add-locks -h $prod_host > prod-dump.sql

这仅转储CREATE TABLE语句。它忽略了任何包含表数据内容的INSERT语句。关于字符集,也有一些评论和一些无害的内容。忽略这些。

我编辑了vim中的每个文件,以从每个表创建中删除AUTO_INCREMENT选项。当然,如果表中的行数不同,这些内容也会有所不同。这是vim命令:

:%g/AUTO_INCREMENT=[0-9]* /s/// 

然后并排比较文件:

diff -y staging-dump.sql prod-dump.sql > diff

输出并排显示文件(至少显示尽可能多的文件),其中一个单字符列在文件中间居中。中间的列将有|表示不同的行,或<表示仅在第一个文件中存在的行,或>表示仅在第二个文件中存在的行。