mysqldump仅查看定义,触发器,例程和事件

时间:2016-01-18 06:26:39

标签: mysql mysqldump

我希望能够将这些数据库对象导出到文件中。它应该以这样的方式运行该文件(稍后)能够在原始文件或不同的数据库中重新创建相同的视图,触发器,函数,存储过程和事件。

换句话说,我不想要表定义及其相关的索引和约束。

我原本期望在mysqldump上提供直截了当的选项,但似乎并非如此。

这几乎适合我:

mysqldump -u root -p source_database --no-data --no-create-db --no-create-info 
--routines --triggers --skip-opt --set-gtid-purged=OFF > db_objects.sql

但明显缺少的是eventsviews。此外,我需要根据具体情况删除或替换每个对象,因为它可能已经存在。

我很欣赏任何朝着正确方向的推动。也许我需要利用脚本来实现这个目标?

编辑:我为什么需要这个?

我希望能够运行一次性重新创建所有这些对象的脚本。这可能是维护生产服务器的一部分,使用来自开发服务器的更新对应物。

现在,prod服务器上的某些表可能还需要更新(ALTERED),但这些表更敏感,需要更多考虑。我的理解是,你可以一天24次丢弃并重新创建视图,事件,触发器和例程(现在我夸大了!),而不关心数据冲突。

3 个答案:

答案 0 :(得分:0)

您需要添加“--events”

此外,对于视图,您可能需要更新版本的MySQL。

- add-drop-table(在--skip-opt之后放置)可能适用于旧版本。

从手册:

- 紧凑

0

答案 1 :(得分:0)

MYSQL:转储包含过程,函数,视图和触发器的数据库。

导出数据库,其中包含所有过程,函数,视图和触发器以及表结构及其数据。

mysqldump <other mysqldump options> --routines export.sql

答案 2 :(得分:-1)

尝试这个我试过它不会在.sql文件中显示任何表

mysqldump -u root -p blog2 --no-data --no-create-db --no-create-info --routines --triggers --skip-opt --lock-tables --set-gtid-purged=OFF > blogs2.sql